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

使用Gradle与Kotlin构建的JAR文件无法运行求助

解决Kotlin/Gradle命令行工具JAR运行时的NoClassDefFoundError问题

这个错误很典型——你的可执行JAR没有打包运行所需的Kotlin标准库及其他依赖,导致JVM在运行时找不到kotlin/jvm/internal/Intrinsics这类核心类。下面我来帮你分析原因并给出两种可行的解决方案:

问题根源

你的Gradle配置里使用了implementation来声明依赖(这是Gradle推荐的现代依赖配置),但在自定义的jar任务中,你只尝试从configurations.compile收集依赖内容。而Gradle的compile配置已经被implementation替代,implementation的依赖不会被包含在旧的compile配置里,所以最终生成的JAR里缺少了Kotlin标准库等关键依赖。

解决方案1:修复自定义jar任务

直接修改jar任务中收集依赖的配置,改用runtimeClasspath(它包含了所有运行时需要的依赖,包括implementation声明的内容):

jar {
    manifest {
        attributes "Main-Class": mainClassName
    }
    // 替换原来的configurations.compile为runtimeClasspath
    from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
}

修改后,重新执行./gradlew clean build生成JAR,再用java -jar build/libs/impt-1.0-SNAPSHOT.jar运行即可。

解决方案2:使用Shadow插件生成Fat Jar(更推荐)

如果想更省心地生成包含所有依赖的可执行JAR(俗称Fat Jar),可以用Shadow插件,它专门处理这类打包场景:

  1. 首先在buildscript的dependencies中添加Shadow插件的classpath(选择兼容你Gradle 4.4.1的版本):
buildscript {
    ext.kotlin_version = '1.2.20'
    ext.junit_platform_version = '1.0.1'
    ext.junit_version = '5.0.0'
    ext.moshi_version = '1.5.0'
    ext.jna_version = '4.5.0'
    ext.shadow_version = '4.0.3' // 添加Shadow版本变量

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.junit.platform:junit-platform-gradle-plugin:$junit_platform_version"
        classpath "com.github.jengelman.gradle.plugins:shadow:$shadow_version" // 添加Shadow插件
    }
}
  1. 应用Shadow插件:
apply plugin: 'kotlin'
apply plugin: 'application'
apply plugin: 'org.junit.platform.gradle.plugin'
apply plugin: 'com.github.johnrengelman.shadow' // 新增这一行
  1. 执行./gradlew shadowJar生成Fat Jar,生成的文件路径是build/libs/impt-1.0-SNAPSHOT-all.jar,运行这个文件即可:
java -jar build/libs/impt-1.0-SNAPSHOT-all.jar

Shadow插件会自动处理依赖打包、主类配置等细节,比自定义jar任务更稳定,尤其适合复杂项目。

内容的提问来源于stack exchange,提问作者César Alberca

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:59:26