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

无法将Spring Boot项目WAR包部署至Tomcat,访问报404错误求助

Spring Boot WAR包部署Tomcat 10出现404的原因及解决办法

问题描述

我有一个Spring Boot应用,通过Spring Boot直接运行时一切正常,但将其打包为WAR包部署到Tomcat(版本10.0.27)后,访问出现404状态码。

已配置的Maven内容:

<properties>
    <start-class>com.example.deploytest.DeploytestApplication</start-class>
</properties>

<packaging>war</packaging>
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
</dependency>

主类代码:

@SpringBootApplication
public class DeploytestApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(DeploytestApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(DeploytestApplication.class);
    }
}

控制器代码:

@RestController
public class MainController {

    @GetMapping
    public String hello() {
        return "hello world";
    }
}

核心原因

Tomcat 10.x 基于 Jakarta EE 9+ 规范,使用jakarta.*包路径;而你当前使用的Spring Boot版本(大概率是2.x)基于传统Java EE(javax.*包路径),两者API包名完全不兼容,导致Spring应用无法被Tomcat 10正确加载,从而出现404。

其他可能的次要原因

  • 访问路径错误:部署WAR包到Tomcat后,访问路径需要加上WAR包的名称(除非将WAR包重命名为ROOT.war),比如WAR包是deploytest.war,访问地址应为http://localhost:8080/deploytest而非直接访问根路径http://localhost:8080。
  • Tomcat部署配置问题:检查Tomcat的webapps目录下是否正确解压WAR包,查看Tomcat日志中是否存在类加载失败的报错信息。

解决办法

  1. 升级Spring Boot到3.x版本:Spring Boot 3.x完全适配Jakarta EE规范,与Tomcat 10.x兼容,升级后重新打包部署即可。
  2. 降级Tomcat到9.x版本:Tomcat 9.x基于Java EE规范,和Spring Boot 2.x完美兼容,无需修改应用代码。
  3. 修正访问路径:如果是路径问题,调整访问URL,或者将WAR包重命名为ROOT.war,即可通过根路径直接访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:10:23