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

部署在AWS EC2实例的Spring Boot REST API返回404错误求助

解决Spring Boot WAR包部署Tomcat后API 404的思路

针对你遇到的问题,结合提供的信息,给出以下排查和解决步骤:

1. 优先解决版本兼容性问题

这是最可能的核心原因:

  • Spring Boot 3.0.0 要求Servlet 6.0规范,而你使用的Tomcat 9仅支持到Servlet 4.0,版本完全不兼容,会导致Spring上下文无法正常初始化。
  • 同时,Spring Boot 3.0.0要求Java 17及以上,你试过Java 8,这也会引发类加载失败等问题,直接导致应用无法启动。

解决方式二选一:

  • 降级Spring Boot到2.7.x版本(支持Tomcat 9和Java 8),修改pom.xml中的parent版本:
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.15</version> <!-- 适配Tomcat9的稳定版本 -->
        <relativePath/>
    </parent>
    
    同时将java.version改为1.8。
  • 升级Tomcat到10.0.x及以上版本(支持Servlet 6.0),同时保持Java 17版本。

2. 检查启动类配置是否正确

打WAR包部署到外部Tomcat时,启动类必须继承SpringBootServletInitializer并重写configure方法,否则Tomcat无法识别并初始化Spring应用上下文。

你的启动类需要改成这样:

@SpringBootApplication
public class AwsApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(AwsApplication.class);
    }

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

3. 配置内置Tomcat为Provided

在pom.xml中添加内置Tomcat的依赖配置,设置为provided scope,避免和外部Tomcat的依赖冲突:

<dependencies>
    <!-- 其他已有依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

4. 验证上下文路径是否准确

  • 登录Tomcat Manager,查看已部署应用的Path列值,确认是否和你访问URL中的上下文路径一致(比如是否是/aws-0.0.1-SNAPSHOT)。
  • 也可以直接查看EC2上Tomcat的webapps目录,看WAR包解压后的文件夹名称,该名称就是默认的上下文路径。

5. 查看日志定位问题

  • 查看Tomcat的logs/catalina.out或localhost.log文件,检查是否有Spring上下文初始化失败的报错(比如类找不到、依赖缺失、版本不兼容的错误信息)。
  • 确认日志中是否有类似Mapping GET /login/code to public java.lang.String com.test.TestController.returnCode()的日志,这表示控制器映射已被正确加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:05:32