2016-04-29 5 views
1

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が間違ったクラスローダーを使用していますか?または、春にバグがありますか?

+0

おそらく関連性があります:https://github.com/spring-projects/spring-boot/issues/3315 – vlastikcz

答えて

0

"間違った"クラスローダーの理由をついに見つけました。

それはのIntelliJ IDEAの「ダイナミッククラスパス」機能です:それは無効になっていた場合は、リロード機能が正しく初期化され <property name="dynamic.classpath" value="true" />

+0

再販業者にはどのようなURLが必要ですか?私のものは空です(再起動は開始されません)。 URL []を持つxx.demo.starter.StarterApplicationアプリケーションを起動する – razor

関連する問題