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

Tomcat部署WAR包后访问localhost:8080/show出现HTTP 404错误求助

IDE运行正常但Tomcat部署WAR包后404问题排查与解决

核心问题

本地IDE中访问localhost:8080/show可正常响应,但将项目打包为WAR部署到Tomcat后,访问相同URL出现404错误,以下是常见排查方向和解决方法:

1. 上下文路径不匹配

IDE运行时,项目通常默认使用根上下文路径(/),但Tomcat部署WAR包时,默认会将WAR包的文件名作为上下文路径。比如你的WAR包名为demo.war,实际访问路径应为localhost:8080/demo/show,而非直接localhost:8080/show。

解决方式:

  • 方法一:修改Tomcat配置,在conf/server.xml的<Host>标签内添加Context配置,指定上下文路径为根路径:
    <Context path="" docBase="demo" reloadable="true"/>
    
  • 方法二:在项目中指定上下文路径,以Spring Boot为例,在application.properties中添加:
    server.servlet.context-path=/
    
  • 方法三:重命名WAR包为ROOT.war,Tomcat会自动将其作为根上下文路径应用。

2. WAR包打包不完整或配置错误

确保WAR包包含所有必要文件,且打包配置正确:

  • 检查pom.xml中打包类型是否为WAR:
    <packaging>war</packaging>
    
  • 若为Spring Boot项目,需排除内置Tomcat依赖,避免与外部Tomcat冲突:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    
  • 执行mvn clean package重新打包,检查target目录下的WAR包,解压后确认WEB-INF/classes存在编译后的控制器类,WEB-INF/lib包含所有依赖Jar包。

3. 控制器映射路径异常

  • 检查控制器类上的注解,若存在全局路径前缀(如@RequestMapping("/api")),则实际访问路径应为上下文路径/api/show。
  • 确认控制器类被Spring容器扫描到:Spring Boot项目需确保@SpringBootApplication注解所在类的包包含控制器类;传统SSM项目需在XML配置中添加组件扫描路径。

4. Tomcat版本兼容性问题

  • 确保项目依赖的Servlet API版本与Tomcat版本匹配:
    • Tomcat 9 → Servlet 4.0(javax.servlet包)
    • Tomcat 10+ → Servlet 5.0+(jakarta.servlet包)
  • 若为Spring Boot项目,需注意Spring Boot版本与Tomcat版本的兼容性,例如Spring Boot 2.x适配Tomcat 9,Spring Boot 3.x适配Tomcat 10+。

验证步骤

  1. 查看Tomcat的webapps目录,确认WAR包已被正确解压为同名文件夹,且文件夹内存在WEB-INF目录。
  2. 查看Tomcat的logs/catalina.out日志,检查项目启动时是否存在类加载失败、配置错误等异常信息。
  3. 访问Tomcat管理页面(localhost:8080/manager),查看已部署应用的上下文路径,确认访问路径是否正确。

内容的提问来源于stack exchange,提问作者Nafis Ligari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:46:18