2017-03-01 10 views
0

を起動することができません。これは、私が取得エラーです - 私はlayoutFactoryオプションをテイクアウトした場合は、カスタム春のブートlayoutFactoryを作成し、今、私の春ブーツアプリ

Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication 

を、私はブートアプリを起動することができています。私build.gradle

私はあなたがまだ春ブーツのを使用している、私の知る限り、libはなくBOOT-INF/libにネストされたjarファイルをパッケージ化したカスタムジャーレイアウトを使用しますが、している

springBoot { 
    mainClass = "com.mycompany.Application" 
    layoutFactory = new CustomLayoutFactory() 

} 

class CustomLayoutFactory implements LayoutFactory { 

    @Override 
    Layout getLayout(File source) { 
     if (source?.getName().toLowerCase().endsWith('.jar')) { 
      return new Layouts.Jar() { 
       @Override 
       public String getLibraryDestination(String libraryName, LibraryScope scope) { 
        return "lib/"; 
       } 

       @Override 
       public String getRepackagedClassesLocation() { 
        return ""; 
       } 
      }; 
     } 

     return Layouts.forFile(source); 
    } 

答えて

0

を持っていますにjarファイルがあると予想されるSpring BootのデフォルトローダーのJarLauncher

CustomLoaderLayoutを実装し、BOOT-INF/libではなく、libを参照する独自のローダークラスを提供する必要があります。

+0

ありがとうAndy。 私はこれを持っています。ここで何を変える必要がありますか? 公共MyClassのはLayouts.JarがCustomLoaderLayout { 公共ボイドwriteLoadedClasses(LoaderClassesWriterライタ)IOExceptionがスロー{ writer.writeEntryを(this.name、新しいれるByteArrayInputStream( "試験" .getBytes()))を実装して延び。 }パブリック文字列getLibraryDestination(文字列LIBRARYNAME、LibraryScopeスコープ){ 戻る "LIB /"。 } public String getClassesLocation(){ return ""; }パブリック文字列getRepackagedClassesLocation(){ リターン ""。 } } –

+0

ローダークラスの定義に関する詳細が必要です。 SpringのブートでLayouts.Jarを拡張し、CustomLoaderLayoutを実装したクラスを作成するにはどうすればよいですか? 公共ボイドwriteLoadedClasses(LoaderClassesWriterライタ)にIOException { writer.writeLoaderClasses()を投げます。 }パブリック文字列getLibraryDestination(文字列LIBRARYNAME、LibraryScopeスコープ){ 戻る "LIB /"。 } public String getClassesLocation(){ return ""; } @Override public String getRepackagedClassesLocation(){ return ""; } –

関連する問題