You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ构建含外部依赖的可执行JAR后运行报错求助

解决方案

问题根源

你打包的JAR没有包含gson依赖类,导致运行时JVM找不到对应的类文件。用Gradle管理的项目,更推荐用Gradle自带或官方插件来处理打包,比IDEA手动配置Artifacts更可靠。

方案一:构建包含所有依赖的"胖JAR"(推荐)

使用Shadow插件将项目代码和所有依赖打包到同一个JAR中:

  1. 修改项目根目录的build.gradle(Groovy语法)或build.gradle.kts(Kotlin语法):
    // build.gradle 示例
    plugins {
        id 'java'
        id 'com.github.johnrengelman.shadow' version '8.1.1'
    }
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        implementation 'com.google.code.gson:gson:2.10.1'
    }
    
    shadowJar {
        // 替换成你的主类全限定名,比如 com.example.MyConsoleMain
        manifest {
            attributes 'Main-Class': '你的主类完整路径'
        }
    }
    
    // build.gradle.kts 示例
    plugins {
        java
        id("com.github.johnrengelman.shadow") version "8.1.1"
    }
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        implementation("com.google.code.gson:gson:2.10.1")
    }
    
    tasks.shadowJar {
        manifest {
            attributes(mapOf("Main-Class" to "你的主类完整路径"))
        }
    }
    
  2. 执行打包命令:
    • Linux/Mac:./gradlew shadowJar
    • Windows:gradlew.bat shadowJar
  3. 运行生成的JAR:
    打包好的JAR在build/libs/目录下,命名格式为[项目名]-all.jar,执行:
    java -jar build/libs/[项目名]-all.jar
    

方案二:生成带依赖的可执行目录

如果不想打胖JAR,可使用Gradle Application插件生成包含依赖和运行脚本的目录:

  1. 修改构建脚本:
    // build.gradle 示例
    plugins {
        id 'java'
        id 'application'
    }
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        implementation 'com.google.code.gson:gson:2.10.1'
    }
    
    application {
        // 替换成你的主类全限定名
        mainClass.set('你的主类完整路径')
    }
    
  2. 生成可执行包:
    • Linux/Mac:./gradlew installDist
    • Windows:gradlew.bat installDist
  3. 运行程序:
    生成的文件在build/install/[项目名]/bin/目录下,直接运行对应脚本:
    • Linux/Mac:./build/install/[项目名]/bin/[项目名]
    • Windows:build\install\[项目名]\bin\[项目名].bat

若坚持用IDEA Artifacts打包

检查以下配置:

  • 在Artifacts配置界面,确保gson的依赖JAR被添加到输出目录的lib文件夹
  • 编辑MANIFEST.MF,在Class-Path属性中添加lib/gson-[版本号].jar(路径需和运行时依赖的位置一致)

内容的提问来源于stack exchange,提问作者rickmune

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 03:21:02