2016-12-16 19 views
0

私は http://projects.spring.io/spring-framework/春の "Hello World" の例のエラー:JNIエラー発生した&NoClassDefFoundErrorがいる:ORG/springframework /豆/工場/ ListableBeanFactory

で春のフレームワーク "クイックスタート" チュートリアルを実行するためにEclipseを使用しようとしました最初にEclipseでMavenプロジェクトをビルドし、3つの.javaファイルを追加しました。

package hello; 

public interface MessageService { 
    String getMessage(); 
} 

package hello; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Component; 

@Component 
public class MessagePrinter { 

    final private MessageService service; 

    @Autowired 
    public MessagePrinter(MessageService service){ 
     this.service = service; 
    } 

    public void printMessage(){ 
     System.out.println(this.service.getMessage()); 
    } 

} 

package hello; 

import org.springframework.context.ApplicationContext; 
import org.springframework.context.annotation.*; 

@Configuration 
@ComponentScan 
public class Application { 

    @Bean 
    MessageService mockMessageService(){ 
     return new MessageService(){ 
      public String getMessage() { 
       return "Hello World!"; 
      }}; 
    } 

    public static void main(String args[]){ 
     ApplicationContext context = 
       new AnnotationConfigApplicationContext(Application.class); 
     MessagePrinter printer = context.getBean(MessagePrinter.class); 
     printer.printMessage(); 
    } 

} 

を次のように コードがあるそれから私は、右のEclipseをクリックして "> Javaアプリケーションとして実行" を選択します。 2件のエラーメッセージが飛び出し:

  1. エラー:JNIエラーが発生した、インストールを確認して、もう一度

  2. A Javaの例外が発生しているしてみてください。

とコンソールはスレッドで

例外を示した "メイン" java.lang.NoClassDefFoundErrorが:ORG/springframework /豆/工場/ ListableBeanFactory java.lang.ClassLoader.defineClass1(ネイティブメソッド)で java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java .net.URLClassLoader.access $ 100(URLClassLoader.java:73) at java.net.URLClassLoad $ 1.run(URLClassLoader.java:368) at java.net.URLClassLoader $ 1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(ネイティブメソッド) at java.net.URLClassLoader.findClass (URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass java.lang.Class.privateGetMethodRecursive(Class.javaでjava.lang.Class.privateGetDeclaredMethodsでjava.lang.Class.getDeclaredMethods0(ネイティブメソッド) で(ClassLoader.java:357) (Class.java:2701) 。 3048) at java.lang.Class.getMethod0(Class.java:3018) at java.lang.Clas java.langで:によって引き起こさsun.launcher.LauncherHelper.validateMainClass sun.launcher.LauncherHelper.checkAndLoadMainで(LauncherHelper.java:544) (LauncherHelper.java:526) でs.getMethod(Class.java:1784) 。 ClassNotFoundException:org.springframework.beans.factory.ListableBeanFactory java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher java.lang.ClassLoader.loadClassで$ AppClassLoader.loadClass(Launcher.java:331) (ClassLoader.java:357) ...もっと19

私は、POMファイル内にSpring依存関係(aopのaspect beans context context-support core ...を含む)を追加しようとしましたが、うまくいかなかった。

+0

あなたの 'pom'に' spring-beans'依存性を追加しようとしました – Jobin

+0

POMファイルにSpring依存性を追加しようとしましたが(これはaopアスペクトbeanコンテキストコンテキストサポートコアを含みます) 。 –

+0

Eclipseを使用してアプリケーションを実行しているので、対応するjarファイルをプロジェクト構築パスに追加する必要があります。プロジェクトの右クリック→ビルドパス→ビルドパスの設定→ライブラリ→外部JARの追加 –

答えて

1

私はすでにこの問題を修正しています。実際、この問題は "JNIエラーが発生しました"とほとんど関係がありませんでした。

この問題の原因は、EclipseがMaven依存関係jarファイル、つまり「spring-beans」をダウンロードしたときにエラーが発生したことです。

「.... m2 \ repository \ org \ springframework \ spring-beans」のすべてのファイルを手動で削除し、Eclipseを使用してプロジェクトを再構築しました。このようにして問題は解決されました。

+0

実際、この例の "hello world"プログラムでは、POMファイルにspring-beansなどの依存関係を追加する必要はありません。 「春の文脈」だけが必要です –

関連する問題