Spring Boot打war包部署Tomcat访问项目根路径返回404问题咨询
Spring Boot WAR包部署Tomcat返回404问题排查方案
1. 校验Tomcat侧部署状态
- 查看Tomcat运行日志:进入
/opt/tomcat/logs目录,查看catalina.out和localhost.日期.log文件,检查是否有Spring应用初始化失败的异常,比如依赖缺失、配置错误、类冲突等问题,优先根据日志报错修复对应问题。 - 确认war包解压完整性:进入
samyar-gameland-1目录,检查WEB-INF/classes下是否存在编译后的业务类文件、WEB-INF/lib下是否包含项目依赖包,确认打包流程没有遗漏文件。 - 校验版本兼容性:Spring Boot 2.x要求Tomcat版本不低于8.5,Spring Boot 3.x要求Tomcat版本不低于10,版本不匹配会导致应用无法正常初始化。
2. 校验Spring Boot项目配置
- 确认排除内置Tomcat依赖:pom.xml中需要添加如下配置,避免内置Tomcat和外部Tomcat冲突:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
- 确认Controller逻辑正常:你当前使用
@Controller注解,方法返回字符串hello时,Spring会默认找对应的视图文件:- 如果使用模板引擎(如Thymeleaf),请确认
resources/templates目录下存在hello.html文件 - 如果需要直接返回字符串内容,可将
@Controller替换为@RestController,或者在what()方法上添加@ResponseBody注解
- 如果使用模板引擎(如Thymeleaf),请确认
- 确认包扫描范围:如果
MainController不在SamyarApplication启动类的同级包或者子包下,需要在启动类上添加@ComponentScan(basePackages = "Controller所在的包路径")注解,指定扫描范围才能注册接口。 - 确认上下文路径配置:检查
application.properties/application.yml中是否配置了server.servlet.context-path参数,如果配置了自定义上下文路径,访问地址需要加上该后缀。
3. 访问路径校验
- 你配置的
@GetMapping("/")对应应用根路径,访问时地址末尾需要加斜杠,即访问http://my-server-ip:8080/samyar-gameland-1/,部分Tomcat版本不会自动对无尾斜杠的地址做重定向,会直接返回404。 - 可新增测试接口排除逻辑干扰,示例如下:
@GetMapping("/test") @ResponseBody public String test() { return "deploy success"; }
重新打包部署后访问http://my-server-ip:8080/samyar-gameland-1/test,验证应用是否正常启动、接口是否正常注册。
内容的提问来源于stack exchange,提问作者Daniel Ef
相关产品推荐
相关产品推荐

