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

Gradle构建SpringBoot应用报错:无法找到指定主类

问题解决:java.lang.NoClassDefFoundError: com.example.fileutil.FilePrepareApplication

问题原因

你用的运行命令存在冲突:java -jar 命令会优先读取jar包Manifest里指定的主类,同时完全忽略-cp/-classpath参数。你在命令后额外加的类名和-cp参数不仅无效,还会让JVM错误解析执行逻辑,导致找不到指定类。

另外当前Gradle的jar配置有遗漏:只打包了implementation依赖的内容,没明确包含项目自身编译的class文件,这也会导致jar包里缺少主类的class文件。

解决步骤

1. 修正运行命令

既然已经在Manifest中指定了Main-Class,直接用以下命令运行即可:

java -jar build/libs/file_util.jar

如果需要额外指定类路径,不要用-jar参数,改用-cp统一定义所有类路径并明确主类(Windows系统把冒号:换成分号;):

java -cp "build/libs/file_util.jar:build/classes/java/main/" com.example.fileutil.FilePrepareApplication

2. 完善Gradle的jar配置

修改jar任务配置,确保项目自身编译的class文件被打包进去:

jar {
    duplicatesStrategy = DuplicatesStrategy.INCLUDE
    project.configurations.getByName("implementation").setCanBeResolved(true)
    manifest {
        attributes 'Main-Class': 'com.example.fileutil.FilePrepareApplication'
    }
    // 同时包含项目编译的class文件和implementation依赖
    from sourceSets.main.output
    from { configurations.implementation.collect { it.isDirectory() ? it : zipTree(it) } }
}

修改后重新执行clean build,再运行jar包即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:03:34