Spring Boot 3.0.1部署外部Tomcat9生产环境返回404求助
问题原因与解决方案
核心原因
Spring Boot 3.0.x 依赖的 Spring Framework 6.x 要求 Servlet 容器支持 Servlet API 5.0,而 Tomcat 9.0.43 仅支持 Servlet API 4.0,版本不匹配导致应用无法完成初始化流程,最终返回404且无有效错误日志(初始化阶段失败,未触发日志输出逻辑)。
Tomcat版本与Servlet API对应关系:
- Tomcat 9.0.60+:支持Servlet API 5.0(兼容Spring 6.x/Spring Boot 3.x)
- Tomcat 9.0.0-9.0.59:仅支持Servlet API 4.0(仅兼容Spring 5.x/Spring Boot 2.x)
可行解决方案
- 升级生产环境Tomcat版本:将生产环境的Tomcat 9.0.43升级到9.0.60或更高版本(比如你本地使用的9.0.62),这是最贴合需求的解决方式,能完全匹配Spring Boot 3.x的运行要求。
- 临时降级应用依赖:如果暂时无法升级Tomcat,只能将Spring Boot版本降级到2.x系列(对应Spring 5.x),但此方案会丢失Spring 6.x的新特性,仅作为应急临时方案。
验证步骤
- 确认生产环境Tomcat的
lib/servlet-api.jar版本:解压后查看MANIFEST.MF文件中的Specification-Version字段,9.0.43对应值应为4.0,9.0.62对应值为5.0。 - 升级Tomcat后重新部署应用,检查Tomcat的
localhost.log或catalina.log,应能看到Spring Boot的初始化日志,此时访问接口不会再返回404。
内容的提问来源于stack exchange,提问作者Theo Huwume
相关产品推荐
相关产品推荐

