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

Gradle构建Spring Boot项目部署Tomcat 8.5访问Controller返回404求助

问题排查方案

1 优先检查访问路径是否正确

  • 独立Tomcat部署war包时,默认会以war包名称作为上下文路径(Context Path),嵌入式启动时使用的是根路径/,但部署到Tomcat后如果你的war包名为practice-0.0.1-SNAPSHOT.war,对应的访问路径应为:http://localhost:8080/practice-0.0.1-SNAPSHOT/healthCheck
  • 如果需要使用根路径访问,可以将war包重命名为ROOT.war后放到Tomcat的webapps目录下,再重启Tomcat即可通过http://localhost:8080/healthCheck访问

2 修正build.gradle配置

当前构建配置存在两个问题,会导致war包部署异常:

2.1 新增war插件

要生成可部署到Tomcat的war包,需要在plugins块中添加war插件:

plugins {
    id 'org.springframework.boot' version '2.5.4'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id 'war' // 新增war插件
}

2.2 修改Tomcat starter的依赖范围

当前引入的spring-boot-starter-tomcat是implementation范围,会将嵌入式Tomcat的相关类打入war包,和独立Tomcat的类产生冲突,需要修改为providedRuntime:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat:2.5.4' // 修改依赖范围
}

3 验证打包结果

修改配置后重新执行gradle clean bootWar命令打包,将生成在build/libs目录下的war包部署到Tomcat的webapps目录,等待Tomcat自动解压完成后再访问对应接口即可。

4 可选校验项

如果以上操作后仍有问题,可确认:

  • 你的Controller类所在的包是否在启动类PracticeApplication的同级包或子包下,确保Spring包扫描能正常加载到Controller(嵌入式启动正常的情况下该配置一般没问题)
  • 检查Tomcat的logs/catalina.out日志,查看是否有Spring Boot启动异常的报错信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:48:01