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
相关产品推荐
相关产品推荐

