2017-09-19 11 views
0

からapplication.ymlロードされません私の問題は、(私は明示的にクラスパスをオーバーライドしない)、ここで説明したものと似ています。 Spring application.yml not detected when running with -classpath春JarLauncherが依存

私は実行可能app.jarを生産SpringBootアプリケーションを持っていますリパッケージのゴールで構築されています。 私はbackend.jarのルートコンテキストで app.jarの依存関係です。 私はMainClass経由IDEAから首尾アプリを実行することができます。

java -jar app.jar 

ただし、アプリケーションは、私はそれを実行したときにapplication.ymlから設定するには失敗します。

SpringApplication.run(MyApp.class, args); 

私は端末から首尾アプリを実行することができますローカルようCloudFoundryはありません:

unzip app.jar 
java org.springframework.boot.loader.JarLauncher 

春が起動し、静的なコンテンツを提供しますがfで失敗します。まず、設定からデータを必要とするものにアクセスしようとします。

私はドキュメントを読みましたが、クラスパスに何が間違っているかわかりません。 MANIFEST.INFからjava -jar app.jarは、上記の3番目の例と同じクラスを実行します。

アイデアありがとうございます。

答えて

0

これはクラスパス問題(duh!)であることが判明しました。

私たちは、依存関係Yでは空のapplication.ymlを、依存関係Xでは実際に有効なapplication.ymlを持っていました。クラスと同様に、クラスパス上のリソースの最初の出現がクラスローダーによって読み込まれます。

ClasspathLoggingApplicationListener出力を春のデバッグログを有効にして調べた後一つはfatjar内の依存関係のクラスパスの順序が問題で説明するユースケースのための異なるであることがわかります。

java -jarネストされたJARオーダーは、ハッシュと思われる。 JarLauncherについてはアルファベットです。

これを一貫させるための既存のリクエスト:https://github.com/spring-projects/spring-boot/issues/9128

関連する問題