2017-07-12 7 views
0

メインのSpringアプリケーションからInterfaceを実装する外部module.jarをロードしようとしています。ServiceLoader、URLClassLoader&Spring:java.lang.NoClassDefFoundError

ので、私は残念ながら、これは、この例外をスローthis solution

@Override 
public void onApplicationEvent(ApplicationReadyEvent event) { 
    File loc = new File("plugins"); 

    File[] flist = loc.listFiles(new FileFilter() { 
     public boolean accept(File file) {return file.getPath().toLowerCase().endsWith(".jar");} 
    }); 

    URL[] urls = new URL[flist.length]; 
    for (int i = 0; i < flist.length; i++) { 
     try { 
      urls[i] = flist[i].toURI().toURL(); 
      System.out.println(flist[i].toURI().toURL().toString()); 
     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    URLClassLoader ucl = new URLClassLoader(urls); 

    ServiceLoader<DeviceInterface> sl = ServiceLoader.load(DeviceInterface.class, ucl); 
    Iterator<DeviceInterface> apit = sl.iterator(); 
    while (apit.hasNext()) 
     System.out.println(apit.next().getName()); 
} 

を実装:

java.lang.NoClassDefFoundError: de/maxrakete/james/device/domain/DeviceInterface 

は、私は自分のモジュール内の依存関係としての私のメインのアプリケーションを宣言することになっているだろうか?現在、私のモジュールは独自の依存関係しか持っていません。

私がオンラインで見つけたリクルートは、この問題についてはっきりしていませんでした。

答えて

0

スプリングブーツの実装に問題があります。あなたのMavenビルドにリパッケージを追加しようとしてください。

 <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>repackage</goal> 
        </goals> 
        <configuration> 
         <classifier>exec</classifier> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+0

私の主なアプリケーションにはどうしますか? – mietzekotze

+0

はい、依存関係が必要なアプリケーション – StanislavL

+0

Unfortunatlyそれは私の問題を解決しませんでした。私はまだ同じエラーが発生します – mietzekotze

関連する問題