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

Spring MVC项目部署Ubuntu Tomcat后出现404错误求助

排查Tomcat部署Spring Boot WAR包404问题的步骤

1. 检查Spring Boot启动类配置

Spring Boot打包WAR部署到外部Tomcat时,启动类必须继承SpringBootServletInitializer并重写configure方法,否则Tomcat无法正确识别和加载Spring上下文:

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

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

未配置此内容时,Tomcat仅会将WAR视为普通Web应用,不会初始化Spring容器,所有请求映射自然无效。

2. 验证WAR包结构正确性

解压WAR包检查以下内容:

  • 确认WEB-INF/lib下包含所有必要依赖(spring-boot-starter-tomcat因scope=provided不会被打包,此为正常情况)
  • 确认WEB-INF/classes下存在编译后的class文件,包括启动类和控制器类
  • 检查WEB-INF/web.xml是否存在(Spring Boot默认自动生成,若自定义过需确保配置无错误)

3. 查看Tomcat日志定位错误

登录Ubuntu服务器,查看Tomcat日志文件(通常位于/var/lib/tomcatX/logs/或/opt/tomcat/logs/目录):

  • catalina.out:查看启动阶段的报错信息,比如Spring容器初始化失败、类缺失等
  • localhost.log:查看请求相关的错误细节
    日志中若出现类找不到、配置文件加载失败等信息,可直接对应解决。

4. 确认Tomcat部署状态

登录Tomcat管理后台(ip:port/manager/html),检查已部署应用:

  • 确认WAR包状态为"running",若为"stopped"或"failed",说明部署过程存在错误
  • 核对应用上下文路径是否与你访问的/MyWARName/一致,避免上下文路径配置偏差

5. 检查控制器类的组件扫描范围

确保启动类所在包是控制器类的父包,或在@SpringBootApplication注解中显式指定扫描路径:

@SpringBootApplication(scanBasePackages = "com.yourpackage.controller")

若控制器类不在Spring的扫描范围内,请求映射不会被注册,直接导致404。

6. 验证视图解析与静态资源配置

针对你的redirect:/products/跳转逻辑,检查:

  • 视图解析器配置是否正确(如使用JSP,需在application.properties中设置spring.mvc.view.prefix和spring.mvc.view.suffix)
  • 静态资源或模板文件是否位于WAR包的正确位置(如JSP需放在WEB-INF/views/目录下)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:45:42