Spring Boot从2.7.2升级到3.0.2后启动失败(Exit Code 1)求助
Spring Boot 3.0.2启动报错(Exit Code 1)排查方案
核心排查方向
1. 彻底检查代码中的Jakarta替换情况
- 全局搜索项目中的
javax.字符串(IntelliJ用Ctrl+Shift+F,输入javax\.),确保所有包引用都替换为jakarta.,比如javax.servlet→jakarta.servlet、javax.persistence→jakarta.persistence - 检查自定义注解、继承类、异常处理类等细节,比如自定义
@ControllerAdvice中引用的异常类是否还依赖javax - 确认主类中没有遗漏的import语句,尤其是自动生成的import可能残留javax引用
2. 校验第三方依赖兼容性
- Spring Boot 3仅支持Jakarta EE 9+,必须确保所有第三方依赖(如MyBatis、Redis客户端、日志扩展等)升级到兼容版本:
- MyBatis需升级至3.5.10+,MyBatis-Spring需3.0.0+
- Spring Data Redis需3.0.0+
- 用
mvn dependency:tree(Maven)或./gradlew dependencies(Gradle)生成依赖树,找出仍依赖javax.*的库,要么升级该库,要么手动排除冲突的javax依赖
3. 检查配置文件中的类引用
- 查看
application.yml/application.properties中指定的自定义类(如转换器、监听器),确保这些类已完成javax到jakarta的替换 - 检查
logback.xml等配置文件,确认没有引用javax相关的过滤器或类
4. 重置IDE构建环境
- 手动清除IntelliJ缓存:
File -> Invalidate Caches...,勾选Clear file system cache and local history后重启IDE - 确认项目SDK为Java 17+(Spring Boot 3强制要求),且所有模块的SDK配置与项目SDK保持一致
- 检查构建工具配置:Maven的
pom.xml中java.version设为17;Gradle的build.gradle中sourceCompatibility和targetCompatibility设为17
5. 获取详细错误日志
- 仅
Process finished with exit code 1无法定位问题,需查看启动时的异常栈:- 在IntelliJ的
Console标签中向上翻找Exception或Error开头的内容 - 若日志被截断,在启动配置中添加参数
-Dlogging.level.root=DEBUG,强制输出详细日志
- 在IntelliJ的
- 常见异常如
NoClassDefFoundError(遗漏javax类替换)、IllegalStateException(依赖冲突),可直接根据异常信息定位问题
6. 校验Servlet容器配置
- 若为WAR包部署,确保使用Tomcat 10+(Tomcat 9及以下仅支持javax)
- 若为内嵌容器,确认
spring-boot-starter-web自动引入Tomcat 10,无手动引入的旧版Tomcat依赖
内容的提问来源于stack exchange,提问作者Pratiksha Thakur
相关产品推荐
相关产品推荐

