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

SpringBoot WAR包部署Tomcat10后REST接口访问404问题

问题根因

核心原因是版本完全不兼容,这也是为什么Tomcat启动时完全不输出Spring Boot初始化日志——你的Spring应用根本没被Tomcat加载:

  • 你当前使用的Spring Boot 2.7.0 基于Java EE 8(Servlet 4.0)规范,所有Servlet相关API用的都是javax.*包前缀
  • Tomcat 10.0.x 属于Jakarta EE 9系列实现,Servlet相关API已经全部迁移到jakarta.*包前缀,无法识别基于旧javax.servlet规范编写的SpringBootServletInitializer启动类,所以只有JSP、静态页面这类Tomcat默认Servlet能直接解析的资源可以访问,所有Spring容器管理的REST接口全部返回404。
修复方案

两个方案选一个即可:

  • 方案1(改动最小,推荐):把独立部署的Tomcat降级到9.0.x版本。Tomcat 9基于Servlet 4.0规范,和Spring Boot 2.7.x完全适配,替换版本后重新部署war包即可正常加载Spring上下文。
  • 方案2(必须用Tomcat10时选):把项目的Spring Boot版本升级到3.0.x及以上。Spring Boot 3基于Jakarta EE规范,原生适配Tomcat10,注意升级后需要把项目中所有直接引用的javax.servlet.*相关导入全部替换为jakarta.servlet.*,重新打包后部署即可。
部署校验注意事项

修复后部署时注意以下几点避免踩坑:

  • 打包时执行mvn clean package命令生成war包,不要直接在Eclipse里导出普通war包,避免漏打依赖
  • 访问接口时要带上部署的应用上下文前缀,比如你把war包命名为test.war部署,接口的完整访问路径是http://<服务器IP>:<Tomcat端口>/test/test/User,不要漏掉应用名路径
  • 部署成功的标志是Tomcat启动日志中会输出Spring Boot的启动横幅、Bean加载、接口映射相关日志

内容的提问来源于stack exchange,提问作者Miguel Ángel García

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:15:30