【问题标题】:Spring Boot Dev Tools Restart Not WorkingSpring Boot 开发工具重启不起作用
【发布时间】:2019-06-26 09:15:45
【问题描述】:

我正在尝试使用 Spring Boot DevTools 重新启动。我一直按照此处提供的说明进行操作:https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html

我正在使用 gradle 并将其包含在我的 build.gradle 文件中:

bootJar {
    excludeDevtools = false
}

我创建 jar 文件并运行 jar 文件:

java -jar app.jar

我能够通过 Intellij 连接到正在运行的应用程序。当我进行更改时,我可以在 Intellij 控制台中看到更新的类已上传到正在运行的进程。在运行进程的日志中,我看到进程尝试重新启动。但是,该进程退出并吐出此日志:

org.springframework.beans.factory.BeanDefinitionStoreException: 无法解析配置类 [com.example.BootApplication];嵌套异常为 java.io.FileNotFoundException: 类路径资源 [com/example/ExampleService.class] 无法打开,因为它不存在。

ExampleService 是我修改的类。

我试图用谷歌搜索,但什么也没找到。我在网上看了很多教程,但没有找到。

有没有人遇到过这个或者有什么我可以尝试的,将不胜感激。

【问题讨论】:

  • 很确定您必须使用 Gradle 插件才能使 Boot 特定功能正常工作:gradle bootRun
  • @RandyCasburn 谢谢!我刚刚用gradle bootRun 试了一下,它就像你建议的那样工作得很好。但是从上面的文档中可以看出,它应该通过包含我上面提供的 sn-p 与可执行 jar 一起使用。
  • 我之前没有看文档,但只是看了。您应该再次查看第一个“叶子”注释。它非常清楚地表明您正在将您的应用程序作为带有java -jar 的打包应用程序运行 - 因此这些工具已关闭。

标签: spring spring-boot spring-boot-devtools


【解决方案1】:

问题是基于文件编译的工作原理。 当你编译一个文件时,它首先删除已经编译的文件,然后添加一个新文件。在此过程中,如果轮询时间过短,文件系统观察者会将其视为两次不同的更新(删除文件和添加新文件)。删除文件会触发从远程应用程序中删除文件并尝试在没有您更改的文件的情况下重新启动应用程序,因此,您会收到此错误。

我遇到了类似的问题,但通过在 application.properties 中添加以下内容解决了它

spring.devtools.restart.pollInterval=10s

您可以更改适合您的 pollInterval

【讨论】:

  • 成功了!我已经接受了这个答案,因为它解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2015-12-14
  • 2021-07-15
  • 2017-12-14
  • 1970-01-01
  • 2022-01-18
  • 2019-11-17
  • 2011-04-09
  • 1970-01-01
相关资源
最近更新 更多