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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 10:50:29