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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:15:32