Spring Platfrom 1.3.3.RELEASEを使用しているSpring Bootアプリケーションがあります。Spring Boot DevToolsがIntelliJ IDEAのURLClassLoaderのために初期化されていません
私の開発環境では、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");
。
のURLは、URLを初期化DefaultRestartInitializer
が条件以下しているので、空です: return thread.getName().equals("main") && thread.getContextClassLoader() .getClass().getName().contains("AppClassLoader");
残念ながら、thread.getContextClassLoader().getClass().getName()
は私にとってURLClassLoader
、およびないAppClassLoader
を返します。
ここで、どういうことが間違っているのか、またどのようにリローダが動作するのかよくわかりません。アプリケーション/ IDEが間違ったクラスローダーを使用していますか?または、春にバグがありますか?
おそらく関連性があります:https://github.com/spring-projects/spring-boot/issues/3315 – vlastikcz