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

运行可执行Jar时出现No main manifest attribute问题求助

解决Jar运行报错:No main manifest attribute, in executable jar

我太懂这种明明检查了所有配置却还是卡壳的烦躁了——你已经试过重建Jar、调整pom配置,也确认了MANIFEST.MF里的主类路径,却还是栽在这个错误上。结合你给出的配置,我帮你梳理几个容易被忽略的关键排查点:

一、补全Spring Boot Maven插件的核心配置

你当前的pom.xml里的Spring Boot插件只有基础的groupId和artifactId,缺少了绑定打包核心目标的配置,这会导致插件根本没起到生成可执行Jar的作用。建议把插件配置修改为:

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <executions>
        <execution>
          <goals>
            <goal>repackage</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

repackage是Spring Boot插件的核心功能,它会把普通Jar重新打包成包含所有依赖、且带有正确manifest信息的可执行Jar,没有这个配置的话,插件相当于空跑,不会生成符合要求的Jar包。

二、核对MANIFEST.MF的格式细节

你提到文件里已经有Main-Class,但这个文件的格式有严格要求,一点点小问题都会导致JVM无法识别:

  • 每一行结尾必须是换行符(LF),尽量避免Windows的CRLF格式(部分场景下会解析失败)
  • Main-Class的冒号后面必须有一个空格,也就是Main-Class: xxxxxxxx.xxxxxxxxxxxxxApplication,不能省略这个空格
  • 文件的最后一行必须是空行,否则最后一行的配置会被JVM忽略

你可以打开MANIFEST.MF仔细核对这几点,有时候看起来正确的内容,格式上的小疏漏就是问题根源。

三、确认打包命令的正确性

一定要用mvn clean package或者mvn clean install来打包,别用mvn jar:jar——后者只会生成普通Jar,不会触发Spring Boot插件的repackage操作,自然不会生成带有正确manifest属性的可执行Jar。

另外,打包完成后可以看看target目录下的Jar体积:Spring Boot的可执行Jar因为包含了所有依赖,通常会比普通Jar大很多,如果你的Jar体积很小,大概率是没正确打包成可执行版本。

四、手动指定主类(兜底方案)

如果上面的方法都没解决问题,可以在插件里手动指定主类,避免自动扫描出错:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <executions>
    <execution>
      <goals>
        <goal>repackage</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <mainClass>xxxxxxxx.xxxxxxxxxxxxxApplication</mainClass>
  </configuration>
</plugin>

把xxxxxxxx.xxxxxxxxxxxxxApplication换成你实际的主类全路径,这样插件会强制用这个类生成manifest信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:00:15