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

Spring Boot应用部署到Tomcat 10后访问接口返回404错误

问题根因

核心故障原因是版本规范不兼容:
你使用的Spring Boot 2.6.7 基于Java EE体系的javax.servlet规范开发,而Tomcat 10.0.x 已经全面迁移到Jakarta EE体系,所有Servlet相关接口包名从javax.*改为jakarta.*,两者完全不兼容。这种场景下Tomcat控制台会显示应用已部署,但Spring MVC的核心分发器DispatcherServlet实际没有完成注册,所有接口请求都会返回404。
你执行java -jar spring-boot-deployment.war能正常启动访问,是因为Spring Boot 2.6.7内嵌的Tomcat版本为9.x,本身适配javax.servlet规范,不受外置Tomcat版本影响。

解决方案

两种方案二选一即可,不需要改动业务代码逻辑:

  • 方案一:降级外置Tomcat版本
    将Tomcat从10.0.22降级到9.x稳定版本,Tomcat 9是最后一个支持javax.servlet规范的大版本,和Spring Boot 2.6.7完全适配,重新把WAR包放到webapps目录部署即可正常访问接口。
  • 方案二:升级Spring Boot版本适配Tomcat 10
    如果必须使用Tomcat 10,需要将Spring Boot升级到3.0及以上版本,Spring Boot 3开始全面适配Jakarta EE规范,可兼容Tomcat 10。注意升级后需要将项目中所有javax.servlet相关的包导入替换为jakarta.servlet,你当前使用的JDK17可以满足Spring Boot 3的版本要求。
配置校验提示

你当前pom.xml中spring-boot-maven-plugin配置的启动类路径为com.baeldung.springbootsimple.SpringBootTomcatApplication,请确认启动类的实际包路径和该配置完全一致,避免构建时因路径不匹配导致应用上下文初始化异常。

内容的提问来源于stack exchange,提问作者trickster

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:36:28