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

Spring Boot REST API打WAR包部署Tomcat10访问404问题排查

Spring Boot WAR包部署Tomcat返回404问题解决方案

核心根因定位(按影响优先级排序)

  • Java编译版本与运行环境不匹配
    项目采用Java 11编译生成字节码,但目标Tomcat运行在Java 1.8环境下,JVM最高仅支持Java 8对应的class字节码版本,无法加载Java 11编译的类文件,根本不会触发Spring应用初始化流程,这也是日志中完全缺失Spring启动日志的核心原因。
  • 框架与容器大版本规范不兼容
    Spring Boot 2.4.4属于2.x分支,全系列基于javax.servlet规范开发;Tomcat 10.0.4开始全面切换为jakarta.servlet规范,二者的Servlet API包名完全不兼容,Tomcat根本无法识别SpringBootServletInitializer的初始化逻辑,即便WAR包解压、类文件正常生成,Spring应用也不会被触发启动。
  • 你当前配置的provided作用域tomcat-embed-jasper、spring-boot-starter-tomcat依赖完全符合外置Tomcat部署的要求,不存在配置错误。

分步排查与修复操作

  • 对齐Java运行版本:将运行Tomcat的Java版本升级到11及以上,和项目编译版本保持一致;或将项目Java编译版本下调到1.8,匹配Tomcat当前的运行环境,禁止跨大版本编译、运行Java应用。
  • 替换兼容的Tomcat版本:不要使用Tomcat 10部署Spring Boot 2.x的WAR包,更换为Tomcat 9.x版本(该版本基于javax.servlet规范,与Spring Boot 2.x全版本兼容)。
  • 启动日志校验:调整版本后重启Tomcat,查看catalina.out日志,正常启动时会出现Spring Boot启动banner、WebApplicationContext初始化的相关输出;如果仍无启动日志,检查启动类是否在项目根包路径下,避免组件扫描失效、重写的configure方法被修饰符限制无法被Tomcat调用。
  • 访问路径校验:确认REST接口的路径映射未被全局路径配置覆盖,当前WAR包部署在webapps目录下的demo文件夹中,默认上下文路径为/demo,只要应用正常启动,访问localhost:8080/demo/test即可正常命中接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 20:27:02