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

外部Tomcat无法启动Spring Boot应用(JDK17/Windows11环境)

解决方案

1. 解决War包重复部署错误

停止Tomcat服务后执行以下操作:

  • 删除Tomcat安装目录下webapps文件夹中的wmm目录和wmm.war文件
  • 清空Tomcatwork目录下的所有文件(清除临时编译缓存)
  • 重启Tomcat,确认webapps下无残留文件后,重新部署war包

2. 修复版本兼容性问题

Spring Boot 3.0.x 要求 Servlet 5.0 规范,而 Tomcat 9.0.x 仅支持 Servlet 4.0,二者不兼容,这是应用无法启动且无日志输出的核心原因。你需要二选一:

  • 升级Tomcat到10.0.x及以上版本(推荐Tomcat 10.1.x,完美适配Spring Boot 3.x)
  • 降级Spring Boot到2.7.x版本(适配Tomcat 9.0.x)

3. 日志排查技巧

  • 启动Tomcat时使用catalina.bat run命令,在控制台实时查看启动输出(startup.bat会隐藏部分报错信息)
  • 检查Tomcatlogs目录下的catalina.out、localhost.log文件,这些文件会记录应用启动时的异常
  • 若配置了Spring Boot日志框架(如Logback),可解压war包查看WEB-INF/logs目录下的应用日志

4. 确认War包构建正确性

  • 执行mvn clean package(Maven项目)或gradle clean bootWar(Gradle项目)重新构建,确保构建过程无报错
  • 解压war包,检查WEB-INF/lib目录下是否包含所有业务依赖(spring-boot-starter-tomcat不应出现在此目录,因为scope=provided)
  • 确认WEB-INF/classes目录下存在你的启动类WhereIsMyMoneyApplication.class和所有配置文件

5. 启动类配置验证

你的启动类继承SpringBootServletInitializer的写法是正确的,可额外验证:

  • 确保configure方法正确返回application.sources(WhereIsMyMoneyApplication.class)
  • 外部Tomcat部署时,main方法不会被调用,可选择删除(不影响功能)

内容的提问来源于stack exchange,提问作者Achraf Ait Ibba

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:52:59