Spring Boot项目打包WAR部署Tomcat后404无响应问题求助
Spring Boot WAR包部署Tomcat无响应排查步骤
1. 优先排查Tomcat启动日志
直接定位核心日志文件,抓取异常信息:
- 查看
Tomcat_HOME/logs/catalina.out:重点排查类加载失败、Spring上下文初始化报错、依赖冲突等致命错误 - 查看
Tomcat_HOME/logs/localhost.log:确认ROOT应用是否被Tomcat正常加载,检查WEB应用初始化流程 - 查看
Tomcat_HOME/logs/localhost_access_log.*.txt:如果无请求记录,说明请求未到达Tomcat;若有记录但返回5xx/4xx,说明应用加载存在问题
2. 检查WAR包结构与依赖
解压ROOT.war,验证关键内容:
- 检查
WEB-INF/lib:确认无重复的Tomcat嵌入依赖(如tomcat-embed-core.jar、tomcat-embed-el.jar),即使pom.xml排除了直接依赖,也要排查间接依赖 - 检查
WEB-INF/web.xml:Spring Boot生成的WAR会自动创建该文件,若自定义了web.xml,需确认DispatcherServlet映射是否设置为/* - 检查
WEB-INF/classes:确认application.properties/application.yml配置正确,比如server.port未被修改为非8080,server.servlet.context-path无错误设置
3. 验证Spring Boot项目配置
启动类配置
确保启动类继承SpringBootServletInitializer并重写configure方法:
@SpringBootApplication public class DemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(DemoApplication.class); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
Maven打包配置
确认pom.xml关键配置:
<!-- 指定打包类型为war --> <packaging>war</packaging> <dependencies> <!-- 排除嵌入式Tomcat依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!-- 提供Servlet API编译依赖,Tomcat会提供运行时依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies> <build> <!-- 指定最终WAR包名为ROOT,确保Tomcat默认加载 --> <finalName>ROOT</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
4. 检查Tomcat自身配置
- 查看
Tomcat_HOME/conf/server.xml:确认Connector端口为8080,未被注释或修改;检查Engine、Host配置,确保appBase="webapps" - 查看
Tomcat_HOME/conf/web.xml:确认默认欢迎页配置未被禁用,比如index.html、index.jsp等 - 检查Tomcat启动用户权限:确保启动用户对
webapps、logs、temp、work目录有读写权限,避免因权限不足导致WAR包无法解压或应用初始化失败
5. 系统层面排查
- 端口占用检查:执行
netstat -tulpn | grep 8080(Linux)或netstat -ano | findstr "8080"(Windows),确认8080端口未被其他进程占用 - 防火墙检查:本地访问时关闭防火墙测试;远程访问需确认8080端口已开放
- WAR包完整性:重新执行
mvn clean package打包,避免打包过程异常导致WAR包损坏
内容的提问来源于stack exchange,提问作者disyourself
相关产品推荐
相关产品推荐

