IDE中运行正常,但启动FatJar时报"Could not find or load main class"错误的排查求助
IDE中运行正常,但启动FatJar时报"Could not find or load main class"错误的排查求助
各位大佬,我现在碰到一个理论上超基础的问题,试遍了各种常规简单的解决方案还是搞不定,实在没思路了来求助!
我的项目在IDE里直接运行完全正常,但尝试用java -jar 路径/xxx.jar启动打包好的fatJar时,就会弹出经典的错误:Error: Could not find or load main class w.x.y.z.App
下面是我已经试过的操作:
- 反复核对了
build.gradle.kts里的主类配置,甚至直接复制粘贴类名替换检查,确保完全一致 - 解压了jar包,确认主类文件存在且路径和类名完全匹配
- 在解压后的jar里检查了主类的所有依赖导入,对应的类文件都能找到
- 确认jar包包含
META-INF/MANIFEST.MF文件,里面确实有两行内容:Manifest-Version: 1.0和Main-Class: w.x.y.z.App - 尝试运行普通jar(非fatJar)时,明明manifest文件存在,却还是报错
no main manifest attribute
我肯定是犯了某个低级错误但自己没发现,有没有大佬能给点思路?
我的build.gradle.kts配置:
plugins { id("java") } java { sourceCompatibility = JavaVersion.VERSION_17 } tasks.register<Jar>("fatJar") { group = "build" archiveClassifier.set("all") from(sourceSets.main.get().output) dependsOn(configurations.runtimeClasspath) from({ configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) } }) manifest { attributes["Main-Class"] = "w.x.y.z.App" } duplicatesStrategy = DuplicatesStrategy.EXCLUDE } dependencies { ... } repositories { mavenCentral() maven { name = "Artifact" url = uri(project.findProperty("mavenRepositoryUrl") as String) credentials { username = project.findProperty("mavenRepositoryUsername") as String password = project.findProperty("mavenRepositoryPassword") as String } } }
App类的开头代码:
package w.x.y.z; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ... public class App { LoggerFactory.getLogger(App.class); public static void main(String[] args) { LOG.info("===== START ====="); ... } }
备注:内容来源于stack exchange,提问作者Nix
相关产品推荐
相关产品推荐

