使用java -jar启动Spring Boot应用失败(非托管类型)求助
解决Spring Boot应用
java -jar启动失败但mvnw spring-boot:run正常的问题 遇到这种情况别着急,咱们一步步来排查解决:
1. 先确认Jar包是不是正确构建的
有时候直接用mvn package打包,可能没生成包含所有依赖的可执行Jar。你得用Spring Boot专属的打包命令重新构建试试:
mvnw clean package spring-boot:repackage
这个命令会帮你把所有依赖打包进去,同时配置好正确的启动入口。
2. 检查pom.xml里的启动类配置
打开项目的pom.xml,看看Spring Boot插件有没有指定主启动类。要是没指定,java -jar可能找不到启动入口。配置大概是这样的:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 把这里换成你自己的主启动类全路径哦 --> <mainClass>com.intranet.si.intranetbusinessrest.IntranetBusinessRestApplication</mainClass> </configuration> </plugin> </plugins> </build>
加上配置后重新打包,再用java -jar试试。
3. 一定要看java -jar的报错信息
你只说了启动失败,但没给具体错误。执行java -jar的时候一定要盯着控制台的输出,比如运行这个命令:
java -jar target/intranet-business-rest-0.0.1-SNAPSHOT.jar
常见的错误无非这几种:
- 缺少依赖包:说明打包时没把依赖包含进去
- 启动类找不到:主类配置错了或者没配置
- 配置文件丢了:比如application.properties不在Jar的正确位置
- JDK版本不兼容:比如项目用JDK17开发,你却用JDK8来运行
4. 看看Jar包内容全不全
可以用解压工具打开生成的Jar包,检查几个关键地方:
BOOT-INF/lib文件夹下有没有所有项目依赖的Jar包BOOT-INF/classes里有没有你项目编译后的class文件,特别是主启动类META-INF/MANIFEST.MF文件里有没有Main-Class和Start-Class这两个配置,正常应该是这样的:
Main-Class: org.springframework.boot.loader.JarLauncher Start-Class: com.intranet.si.intranetbusinessrest.IntranetBusinessRestApplication
要是这俩配置缺失,java -jar肯定启动不了。
5. 留意Maven打包时的警告
你之前运行mvnw spring-boot:run的时候有警告,提到dependencyManagement的问题,这可能是依赖版本冲突或者配置不对。打包时仔细看日志,有没有报错或者警告说某个依赖没正确引入,这也会导致Jar包运行时缺东西。
内容的提问来源于stack exchange,提问作者EL OUFIR Hatim
相关产品推荐
相关产品推荐

