我有一个使用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使用了错误的类加载器吗?或者春天有错误吗?
答案 0 :(得分:0)
我终于找到了错误的原因"类加载器。
它是动态类路径" IntelliJ IDEA中的功能:
<property name="dynamic.classpath" value="true" />
如果它被禁用,重新加载器将被正确初始化。