由于带有IntelliJ IDEA的URLClassLoader,Spring Boot DevTools未初始化

时间:2016-04-29 15:54:33

标签: spring spring-boot

我有一个使用Spring Platfrom 1.3.3.RELEASE的Spring Boot应用程序。

在我的开发环境中,我将在IntelliJ IDEA 15中作为“Spring Boot Application”类型运行配置启动它。最近,我已经添加了'org.springframework.boot:spring-boot-devtools'来进行类重新加载,如https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html所述。

起初它起作用,但最近我注意到从IDEA重新加载的类停止了工作。

经过一些调试后,我发现LocalDevToolsAutoConfiguration是用@ConditionalOnInitializedRestarter注释的,这在这里失败了 return ConditionOutcome.noMatch("Restarter initialized without URLs");

网址为空,因为初始化网址的DefaultRestartInitializer具有以下条件: return thread.getName().equals("main") && thread.getContextClassLoader() .getClass().getName().contains("AppClassLoader");

不幸的是,thread.getContextClassLoader().getClass().getName()为我返回URLClassLoader,而不是AppClassLoader

现在,我不确定会出现什么问题以及重新加载器应该如何工作。我的应用程序/ IDE使用了错误的类加载器吗?或者春天有错误吗?

1 个答案:

答案 0 :(得分:0)

我终于找到了错误的原因"类加载器。

它是动态类路径&#34; IntelliJ IDEA中的功能: <property name="dynamic.classpath" value="true" /> 如果它被禁用,重新加载器将被正确初始化。