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
相关产品推荐
相关产品推荐

