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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:24:02