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

将Spring Boot WAR包部署到Tomcat时出现404错误求助

Spring Boot WAR包部署Tomcat10出现404的解决方案

核心原因

Tomcat10基于Jakarta EE 9规范,API包名从javax.servlet全面替换为jakarta.servlet;而Spring Boot 2.x及以下版本依赖传统Java EE(javax.*)API,两者包名不兼容,直接部署会导致控制器无法被Tomcat正确识别,从而出现404错误。

具体解决步骤

  • 升级Spring Boot版本到3.x及以上
    Spring Boot 3.x开始全面适配Jakarta EE规范,原生支持Tomcat10+,这是解决该问题的根本方案。

  • 确保WAR打包配置正确
    如果用Maven,需在pom.xml中配置:

    <packaging>war</packaging>
    
    <dependencies>
        <!-- 排除嵌入式Tomcat,避免与外部Tomcat冲突 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    

    如果用Gradle,配置如下:

    plugins {
        id 'war'
    }
    
    dependencies {
        providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    }
    
  • 确认访问路径正确
    Tomcat部署WAR包后,默认上下文路径为WAR包的文件名(不含.war后缀)。比如你的WAR包名为tcjardemo.war,正确访问地址应为:
    http://localhost:8080/tcjardemo/show
    若需直接通过/show访问,可将WAR包重命名为ROOT.war,或在Tomcat的server.xml中配置上下文路径为/。

  • 检查Tomcat日志排查问题
    查看Tomcat的logs/catalina.out或localhost.log,若出现jakarta.servlet相关的类找不到错误,说明Spring Boot版本仍未适配Jakarta EE,需确认版本升级到位。

你的代码中SpringBootServletInitializer的继承和configure方法重写是正确的,无需修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:26:05