wake-up-neo.net

java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing in Intellij

Ich habe die Intellij Idea 12 Community Edition verwendet. Ich versuche, Testfälle für meine Klasse durch Erstellen von Testfällen zu erstellen. Wenn ich meinen Testfall starte, heißt es 

Java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
    at Java.lang.ClassLoader.defineClass1(Native Method)
    at Java.lang.ClassLoader.defineClassCond(ClassLoader.Java:631)
    at Java.lang.ClassLoader.defineClass(ClassLoader.Java:615)
    at Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:141)
    at Java.net.URLClassLoader.defineClass(URLClassLoader.Java:283)
    at Java.net.URLClassLoader.access$000(URLClassLoader.Java:58)
    at Java.net.URLClassLoader$1.run(URLClassLoader.Java:197)
    at Java.security.AccessController.doPrivileged(Native Method)
    at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
    at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:301)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
    at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.Java:10)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.Java:59)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.Java:26)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.Java:59)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.Java:26)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.Java:44)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.Java:195)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.Java:63)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.Java:120)
Caused by: Java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
    at Java.net.URLClassLoader$1.run(URLClassLoader.Java:202)
    at Java.security.AccessController.doPrivileged(Native Method)
    at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
    at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:301)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
    ... 25 more

Wie würde ich einen Testfall in Intellij ausführen? Ich habe die junit4.11-JAR-Datei in mein Modul aufgenommen

27
jackyesind

Haben Sie die hamcrest-core-1.3.jar-Datei in Ihren Klassenpfad eingefügt? Wenn nicht eingeschlossen, bedeutet dies, dass das Glas eingeschlossen wird, und es erneut versuchen.

51
muthu

fügen Sie junit.jar zu Ihrer Projektabhängigkeit hinzu Sie müssen möglicherweise auch hamcrest.jar hinzufügen.

Öffnen Sie Datei-> Projektstruktur, klicken Sie auf Module-> Abhängigkeiten und fügen Sie junit.jar hinzu.

12
bowman han

Die neueste Version von hamcrest-all ist verfügbar unter: https://search.maven.org/search?q=a:hamcrest-all

Laden Sie diese Version herunter (im Gegensatz zum Hamcrest-Kern) und das sollte es tun.

1

Wenn Sie auf diesen Fehler (und einige andere Threads) bei diesem Fehler stoßen und das Hinzufügen von JAR zu Abhängigkeiten nicht funktioniert, müssen Sie den allgemeinen Java-Klassenpfad hinzufügen.

Ich bin auf diesen Fehler in OSX gestoßen, wo Maven die Abhängigkeit herunterladen, aber im Fork-Modus nicht finden konnte. 

Durch das Hinzufügen aller Hamcrest-Gläser zu Library/Java/Extensions wurde das Problem behoben, wenn nichts anderes möglich war.

1
Rampant