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

Docker中Spring Boot Kotlin代码修改未生效,新增Controller访问404如何解决?

解决Spring Boot Docker部署后代码未同步的问题

以下是针对你的问题的具体解决步骤:

1. 强制重新构建镜像并启动容器

Docker Compose默认会复用之前的构建缓存,导致代码修改后容器仍使用旧版本。执行以下命令强制重新构建镜像并启动服务:

docker-compose down
docker-compose up --build

down会停止并删除旧容器,--build会强制重新构建Spring Boot服务的镜像,确保新代码被打包进去。

2. 本地预验证构建结果

先在本地执行Gradle构建命令,确认代码能正常编译并生成最新的jar包:

./gradlew clean build -x test

检查build/libs/twitch-bot-0.0.1-SNAPSHOT.jar的修改时间是否为最新,也可以解压jar包,确认UserController.class文件存在于对应目录下。

3. 验证容器内的jar包是否更新

启动容器后,执行以下命令进入容器内部检查:

docker exec -it <你的spring-boot容器名称或ID> bash

进入容器后,查看/app/build/libs/下的jar包修改时间,或者用jar tf /app/build/libs/twitch-bot-0.0.1-SNAPSHOT.jar | grep UserController确认类文件是否存在。

4. 检查Spring Boot组件扫描范围

确保你的UserController所在的包被Spring Boot扫描到。如果主应用类(带@SpringBootApplication注解的类)的包是com.example.twitchbot,而UserController在com.example.twitchbot.controller下,默认会自动扫描;如果Controller在其他包,需要在主类上添加@ComponentScan指定扫描路径,比如:

@SpringBootApplication(scanBasePackages = ["com.example.yourcontrollerpackage"])
class TwitchBotApplication {
    // ...
}

5. 查看应用启动日志排查问题

通过日志确认应用启动时是否加载了UserController,以及是否有其他异常:

docker-compose logs spring-boot-kotlin

如果日志里没有显示Mapping GET "/users"相关信息,说明Controller没被Spring识别,需要检查组件扫描或Controller注解是否正确(比如有没有写错@RestController或@RequestMapping)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:12:47