You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 00:10:00