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

使用本地Jar文件的最简Gradle项目运行报ClassNotFoundException如何解决

问题原因
  • 你当前Gradle配置中的默认jar任务仅会打包项目本身的Java代码编译产物,不会将libs目录下的第三方依赖(比如javax.json相关jar包)合并到最终生成的jar中,也没有在Manifest文件中声明依赖的类路径,所以直接运行java -jar时JVM无法找到第三方类,抛出ClassNotFoundException。
  • ./build/scripts/Project启动脚本报错是因为你仅在jar任务的Manifest中配置了主类,没有给application插件配置全局主类参数,导致生成的启动脚本缺少主类配置,触发参数错误提示。
修复方案

直接替换你的build.gradle为以下配置即可,完全保留本地jar依赖的使用方式,无需额外修改项目结构:

apply plugin: 'java'
apply plugin: 'application'

// 配置application插件的主类,解决启动脚本报错问题
mainClassName = 'driver.helloJSON'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

jar {
    manifest {
        attributes 'Main-Class': 'driver.helloJSON'
    }
    // 将所有依赖的jar包内容合并到最终产物中,生成可直接运行的胖jar
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
    // 避免多依赖中存在重复文件时构建报错
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

修改完成后执行构建命令:
./gradlew clean build

构建完成后即可直接运行:

  • 用jar包运行:java -jar ./build/libs/Project.jar
  • 用启动脚本运行:./build/scripts/Project

两种方式都可以正常启动项目,无需额外配置类路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 03:24:11