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

已配置spring-boot-devtools但Spring Boot应用修改后不自动热重载

问题原因

日志中出现LiveReload server is running on port 35729仅代表spring-boot-devtools依赖被成功加载,不代表热重启触发链路配置完成。devtools的自动重启逻辑是监听类路径下编译后的class文件变更,只要class文件没有更新、或者IDE/配置屏蔽了运行时的变更监听,就不会触发重载。

排查解决步骤

按优先级从高到低依次排查:

  • 补全IDE运行时自动编译配置
    90%以上的该问题都是IDE默认配置导致:
    • 如果使用IDEA:仅开启"Build project automatically(自动构建项目)"不够,需要打开Settings -> Advanced Settings,找到Allow auto-make to start even if developed application is currently running(中文选项名:即使正在运行应用程序也允许自动生成),勾选后保存,重启IDE即可。
    • 如果使用Eclipse:打开顶部菜单Project,确认勾选Build Automatically(自动构建),保存文件时会自动触发编译。
  • 检查devtools重启开关配置
    查看项目的application.yml/application.properties配置文件,确认没有显式配置spring.devtools.restart.enabled=false,该配置默认值为true,被手动关闭后会直接禁用自动重启能力。如果需要自定义监控规则,可以补充如下配置:
    spring:
      devtools:
        restart:
          enabled: true
          additional-paths: src/main/java # 监控源码路径变更
          exclude: static/**,public/**,templates/** # 静态资源不触发重启,走LiveReload刷新即可
    
  • 确认启动方式正确
    devtools会在生产运行模式下自动禁用,不要通过以下方式启动:
    • 打jar包后执行java -jar启动
    • 开启了Spring Boot生产profile(profile=prod)启动
      必须通过IDE的运行/调试按钮直接启动主类,启动日志线程名显示restartedMain才代表devtools的重启类加载器正常初始化。
  • 验证编译链路是否正常
    修改Controller代码后,查看项目编译输出目录(Maven项目默认是target/classes,Gradle项目默认是build/classes)下对应Controller的class文件修改时间,如果和你修改java文件的时间差超过5秒,说明IDE自动编译没有触发,可以手动按构建快捷键(IDEA是Ctrl+F9,Eclipse是Ctrl+B)触发一次全量编译,正常情况下此时devtools会立刻触发重启。
  • 排查依赖冲突
    执行依赖树分析命令mvn dependency:tree,确认项目中没有引入其他热部署类组件(比如JRebel、旧版本SpringLoaded),这类组件会抢占类加载监听逻辑,导致devtools的变更监听失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:00:53