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

部署Spring Boot应用至GCP Compute Engine VM后调用REST端点遇404错误

排查与解决Tomcat10部署Spring Boot应用404问题

核心原因:Tomcat版本差异导致的Servlet API包名变更

Tomcat 10 是第一个基于 Jakarta EE 9 的版本,所有Servlet相关API的包名从 javax.servlet 改为了 jakarta.servlet,而你的本地Tomcat 8基于Java EE 8(javax.servlet),这是最可能导致部署失败或404的原因。


具体排查与修复步骤

1. 检查Spring Boot版本兼容性

  • 如果你用的是 Spring Boot 2.x:它依赖的是javax.servlet API,和Tomcat10的jakarta.servlet不兼容,直接部署会导致类加载失败(可能不直接抛出明显错误,但应用无法正常初始化,最终导致端点找不到)。
    • 解决方式二选一:
      • 将VM上的Tomcat降级到9版本(和本地Tomcat8版本兼容性更匹配);
      • 升级Spring Boot到3.x版本(需同时将JDK升级到17+,因为Spring Boot3.x要求JDK17及以上)。

2. 确认WAR包的访问路径

  • 如果你部署的WAR包不是ROOT.war,访问时需要加上上下文路径:
    • 比如WAR包名为pest.war,则访问地址应为 http://[VM_IP]:8080/pest/(注意末尾的斜杠);
    • 若想直接用根路径访问,将WAR包重命名为ROOT.war后重启Tomcat。

3. 查看Tomcat日志定位部署问题

  • 登录GCP VM,进入Tomcat的日志目录(通常为/opt/tomcat/logs/,具体路径依Tomcat安装位置而定):
    • 查看catalina.out日志,搜索是否存在ClassNotFoundException(比如找不到javax.servlet.*相关类),这直接说明API包不兼容;
    • 查看localhost.log,确认应用是否成功初始化,有无Spring上下文加载失败的报错。

4. 验证VM上的Tomcat服务状态

  • 在VM上执行命令 curl http://localhost:8080,检查是否能访问Tomcat默认页面:
    • 如果无法访问,说明Tomcat未启动成功,检查Tomcat服务状态(比如用systemctl status tomcat,若通过服务管理启动的话);
    • 如果能访问默认页面,说明Tomcat本身无问题,问题出在应用部署环节。

额外注意事项

  • 确保你的Spring Boot应用打包为WAR包(而非JAR包),且PestApplication类正确继承了SpringBootServletInitializer(你的代码已满足此要求);
  • 检查VM上的Tomcat webapps目录,确认WAR包已被自动解压(若未解压,说明部署失败,日志中必有对应报错)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:40:31