Spring Boot项目部署至独立Tomcat后无法通过路径访问
问题排查与解决方案
1. 核心版本兼容问题(首要排查)
Spring Boot 3.2.2 依赖的 Servlet 规范是 6.0,而 Tomcat 9.0.85 仅支持最高 Servlet 4.0,两者版本不兼容,这是部署后无法访问的最可能原因。
- 解决方向:
- 升级 Tomcat 到 10.1.x 及以上版本(Spring Boot 3.x 官方适配版本)
- 降级 Spring Boot 到 2.7.x 系列(适配 Tomcat 9 的稳定分支)
2. 检查SpringBootServletInitializer配置
确保启动类正确继承并实现configure方法,示例代码:
@SpringBootApplication public class TestSpringBoot2Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(TestSpringBoot2Application.class); } public static void main(String[] args) { SpringApplication.run(TestSpringBoot2Application.class, args); } }
- 注意:启动类需放在项目根包下,保证Spring能扫描到所有组件。
3. 验证pom.xml关键配置
检查pom.xml中的核心配置是否正确:
- 打包类型确认:
<packaging>war</packaging> - Tomcat依赖的scope设置:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> - 若选择降级Spring Boot,需修改父依赖版本:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.18</version> <!-- 适配Tomcat9的稳定版本 --> <relativePath/> </parent>
4. 查看Tomcat日志定位错误
访问失败后,查看Tomcat日志文件获取具体异常信息:
tomcat_home/logs/catalina.out:全局运行日志,包含Spring Boot启动时的报错tomcat_home/logs/localhost.log:本地主机相关的请求与错误日志tomcat_home/logs/localhost_access_log.*.txt:访问日志,确认请求是否到达Tomcat
5. 确认上下文路径与访问地址
- Tomcat默认以war包名作为上下文路径,即
/testspringboot2,需确认Tomcat服务端口为8088(检查tomcat_home/conf/server.xml中的Connector端口配置) - 若有健康检查接口,可尝试访问
http://tomcatserver:8088/testspringboot2/actuator/health(需先添加spring-boot-starter-actuator依赖并开启端点),判断是应用未启动还是路由问题
内容的提问来源于stack exchange,提问作者devnull69
相关产品推荐
相关产品推荐

