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

Spring Boot JAR部署Ubuntu服务器报错:no main manifest in jar file

解决Spring Boot JAR "no main manifest in jar file" 错误

嘿,这个问题我太熟了!当你遇到“no main manifest in jar file”错误时,本质是你的Spring Boot JAR包缺少了启动所需的主清单配置——也就是MANIFEST.MF文件里没有指定主类信息,而这个配置本来应该由Spring Boot的Maven插件自动帮你生成的。下面给你一步步解决的办法:

1. 检查并配置Spring Boot Maven插件

首先要确保你的pom.xml里已经正确引入了spring-boot-maven-plugin,这个插件负责将普通JAR转换成Spring Boot可执行JAR,并自动添加必要的清单条目。正确的配置应该是这样的:

<build>
    <plugins>
        <!-- 必须配置这个插件才能生成可执行Spring Boot JAR -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <!-- 版本要和你的Spring Boot依赖版本保持一致 -->
            <version>${spring-boot.version}</version>
            <executions>
                <execution>
                    <goals>
                        <!-- repackage目标会重新打包JAR为可执行格式 -->
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2. 使用正确的命令构建JAR

别用mvn jar这种只生成普通JAR的命令!一定要执行:

mvn clean package

或者

mvn clean install

这两个命令会触发spring-boot-maven-plugin的repackage目标,生成包含主清单的可执行JAR。

3. 验证生成的JAR是否正确

构建完成后,你可以通过以下命令验证清单文件:

  • 查看MANIFEST.MF是否存在:
    jar tf your-app.jar | grep MANIFEST.MF
    
  • 查看清单内容,确认包含Main-Class和Start-Class:
    unzip -p your-app.jar META-INF/MANIFEST.MF
    

正常的清单内容应该类似这样:

Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.yourcompany.yourapp.YourApplication

4. 避坑提醒

  • 不要手动修改MANIFEST.MF,插件会自动维护这个文件,手动修改容易出问题
  • 插件版本必须和你的Spring Boot依赖版本完全一致,版本不兼容可能导致打包失败
  • 如果是多模块项目,确保插件配置在包含main方法的主模块中,而不是父模块或者其他子模块

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:32:21