Spring Boot应用启动失败:Tomcat版本兼容性问题求助
问题解决:Tomcat与Spring Boot版本不兼容导致方法不存在
问题原因
你使用的Spring Boot 2.7.6和Tomcat 10.1.4存在核心兼容性冲突:
- Spring Boot 2.x系列基于Java EE规范,依赖
javax.servlet包下的API - Tomcat 10+系列已切换到Jakarta EE规范,API包名统一改为
jakarta.servlet - 两者的
addServletContainerInitializer方法参数类型完全不匹配,导致找不到目标方法
解决方案
方案1:降级Tomcat版本(推荐)
Spring Boot 2.7.x默认兼容Tomcat 9.x系列,直接移除手动指定的tomcat-embed-core依赖,让Spring Boot的依赖管理自动维护兼容版本:
<!-- 删除手动指定的Tomcat依赖 --> <!-- <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>10.1.4</version> </dependency> -->
若需显式指定版本,使用Spring Boot 2.7.x适配的Tomcat 9版本(如9.0.68):
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>9.0.68</version> </dependency>
方案2:升级Spring Boot到3.x(若需使用Tomcat 10+)
如果必须使用Tomcat 10+,需将Spring Boot升级到3.x系列(最低3.0.0),Spring Boot 3.x完全基于Jakarta EE规范,与Tomcat 10+原生兼容。
内容的提问来源于stack exchange,提问作者Janice Wong
相关产品推荐
相关产品推荐

