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

Spring Boot打包war部署到Tomcat后接口端点无法访问问题求助

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

1. 检查Gradle打包配置正确性

  • 首先确认build.gradle中已经排除Spring Boot内置Tomcat依赖,避免和外部Tomcat容器冲突:
    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-web'
        // 必须添加该配置,声明使用外部Tomcat容器
        providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    }
    
  • 确认war包名称和访问的上下文路径一致:如果生成的war包名称是spring-boot-example-0.0.1-SNAPSHOT.war,对应访问路径应为http://host:8080/spring-boot-example-0.0.1-SNAPSHOT/hello-world;如果需要自定义上下文路径,可直接将war包重命名为预期的上下文名称(如spring-boot-example.war)后再上传部署。

2. 检查Spring Boot项目配置

  • 确认application.properties/application.yml中没有配置server.servlet.context-path参数,外部Tomcat部署时会忽略Spring Boot自带的上下文路径配置,完全以war包名称或Tomcat站点配置的上下文路径为准。
  • 确认ExampleController类所在包是主启动类ExampleApplication的同级包或子包,Spring Boot默认仅扫描主启动类所在包及其子包下的组件,如果Controller存放在其他路径,需要手动添加@ComponentScan注解指定扫描路径。

3. 排查Tomcat运行日志

  • 进入Tomcat安装目录的logs文件夹,查看catalina.out和localhost.日期.log日志,检查应用部署过程中是否存在异常抛出。即使Tomcat管理页面显示应用运行正常,也可能存在Spring容器启动失败、接口未注册的情况。
  • 如果日志出现类不存在相关报错,大概率是依赖打包不全,必须使用./gradlew bootWar命令打包,普通./gradlew war命令不会将第三方依赖打入war包,会导致启动失败。

4. 验证部署包有效性

  • 可先将生成的war包放到本地的Tomcat 9的webapps目录下,启动本地Tomcat访问对应路径验证包本身是否可用。如果本地也无法访问,说明是打包环节的问题;如果本地可以正常访问,说明是服务器Tomcat的配置问题,可检查服务器Tomcat的权限配置、webapps目录读写权限是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:27:04