Spring Boot启动报错:Tomcat与Spring Boot版本兼容及依赖问题
解决方案
方案一:用Spring Boot Starter替代手动Tomcat依赖
直接移除你手动添加的tomcat-embed-core依赖,添加Spring Boot官方提供的starter来自动管理Servlet API和兼容版本的Tomcat:
如果是Web应用,添加:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
如果仅需要Servlet API(无Web MVC),添加:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-servlet</artifactId> </dependency>
Spring Boot的parent依赖会自动管控所有相关组件的版本,彻底避免版本冲突,同时javax.servlet.http下的类也会被正确引入。
方案二:统一Tomcat版本(特殊场景需求)
如果必须手动指定Tomcat版本,不要直接引入tomcat-embed-core,而是通过Spring Boot的全局属性来配置,确保版本与Spring Boot兼容:
<properties> <!-- 替换为和你的Spring Boot版本匹配的Tomcat 8.5.x最新补丁版本,比如8.5.93 --> <tomcat.version>8.5.93</tomcat.version> </properties>
这样Spring Boot会自动同步所有Tomcat相关依赖的版本,既保证TomcatWebServerFactoryCustomizer能正常调用方法,也不会缺失Servlet API类。
问题根源
- 手动引入的Tomcat 8.5.32版本过低,与Spring Boot内置的
TomcatWebServerFactoryCustomizer依赖的方法不兼容(setMaxHttpRequestHeaderSize在该版本中不存在或签名不匹配)。 - 移除Tomcat依赖后缺失Servlet类,是因为这些类属于Servlet API规范,你未引入对应的依赖,而Spring Boot starter会自动包含该规范及兼容的容器实现。
内容的提问来源于stack exchange,提问作者camilajenny
相关产品推荐
相关产品推荐

