Spring Boot应用打包war部署到Tomcat10后完成全部配置仍报404求助
Spring Boot部署Tomcat 10返回404排查方案
- 优先排查Servlet规范兼容性问题
Tomcat 10及以上版本采用Jakarta EE 9+规范,所有Servlet相关类的包名从javax.servlet.*调整为jakarta.servlet.*。如果你使用的Spring Boot版本低于3.0,默认依赖的是基于javax规范的Servlet API,和Tomcat 10完全不兼容,应用实际未成功启动,访问就会返回404。
解决方法二选一即可:- 升级Spring Boot到3.0及以上版本,自动适配Jakarta规范
- 降级Tomcat到9.x版本,适配javax规范
- 检查外置Tomcat启动类配置
部署到外置Tomcat需要额外编写初始化类继承SpringBootServletInitializer,重写configure方法指定Spring Boot启动入口,否则Tomcat无法识别应用启动逻辑:
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { // 此处替换为你自己的Spring Boot启动类 return application.sources(DemoApplication.class); } }
- 核对访问路径是否正确
外置Tomcat部署war包默认以war包文件名作为上下文路径,比如你上传的war包名为myapp.war,正确的访问路径应为http://服务器IP:Tomcat端口/myapp/接口路径,不能直接沿用内置Tomcat的根路径访问规则。如果需要根路径直接访问,可将war包重命名为ROOT.war后再放入webapps目录。 - 检查内置容器依赖排除是否完整
确认pom.xml中spring-boot-starter-tomcat的scope已正确设置为provided,且没有其他依赖间接引入内置Servlet容器相关包,避免依赖冲突导致应用启动失败。 - 查看Tomcat运行日志
进入Tomcat的logs目录,查看catalina.out启动日志,排查是否存在依赖缺失、Bean初始化失败、端口占用等启动异常,这类问题会导致应用未完成启动,访问时直接返回404。
内容的提问来源于stack exchange,提问作者vinod kumar ponnada
相关产品推荐
相关产品推荐

