Spring Boot升级至1.5.9.RELEASE后Tomcat启动失败求助
解决Spring Boot 1.5.9.RELEASE启动失败(StandardEngine[Tomcat]报错)
1. 排查Tomcat依赖冲突
Spring Boot 1.5.9.RELEASE默认适配Tomcat 8.5.23,先检查项目是否引入了其他版本的Tomcat组件(如tomcat-catalina、tomcat-embed-core等)导致版本冲突。
执行Gradle命令查看依赖树:
./gradlew dependencies --configuration compile
若发现冲突,在Gradle配置中排除多余的Tomcat依赖,示例:
configurations.all { exclude group: 'org.apache.tomcat', module: 'tomcat-catalina' }
或针对具体依赖单独排除:
implementation('第三方依赖坐标') { exclude group: 'org.apache.tomcat' }
2. 规范Spring Boot Starter配置
确保项目正确引入spring-boot-starter-web,避免手动引入Servlet API或Tomcat组件引发版本不匹配:
dependencies { compile('org.springframework.boot:spring-boot-starter-web') // 其他业务依赖... }
如果是war包部署场景,需将spring-boot-starter-tomcat标记为provided:
providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
3. 检查自定义Servlet/Filter组件
若项目中有自定义Servlet、Filter或Listener,排查以下点:
- 注解(如
@WebServlet、@WebFilter)的映射路径是否重复 - 组件初始化逻辑是否存在依赖未就绪的操作(比如构造方法中调用未初始化的Bean)
- 通过
@Bean注册组件的代码是否抛出异常
4. 清理缓存并重新构建
缓存可能导致依赖加载异常,执行命令清理后重新构建:
./gradlew clean build --refresh-dependencies
5. 排查JVM启动参数
确认启动时的JVM参数未设置冲突属性,比如catalina.base等Tomcat相关系统变量,避免干扰内嵌Tomcat的初始化流程。
内容的提问来源于stack exchange,提问作者Venkatesh A Hanamsagar
相关产品推荐
相关产品推荐

