2013-07-11 3 views
27

Ich benutzte Intellij Idea 12 Community Edition. Ich versuche, einen Testfall für meine Klasse zu erstellen, indem ich einen Testfall erstelle. Wenn ich meinen Testfall laufe, sagt esjava.lang.NoClassDefFoundError: org/hamcrest/Selbstbeschreibung in Intellij

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 Testfall in Intellij laufen lassen. Ich habe die junit4.11-JAR-Datei zu meinem Modul hinzugefügt

+1

Die Umstellung von JUNI 4.12 auf 4.8 hat gut funktioniert. Fügen Sie das JAR-Objekt Ihrem Klassenpfad in der Projektstruktur Ihrer IDE hinzu. Kompilieren Sie nach dem Hinzufügen die Klasse, auf der Sie testen, und versuchen Sie dann, die Testdatei auszuführen. Ich hoffe es funktioniert dann gut. –

Antwort

46

Haben Sie die Datei hamcrest-core-1.3.jar in Ihren Klassenpfad aufgenommen? Wenn nicht enthalten bedeutet, dass das Glas und versuchen Sie es erneut.

10

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, fügen Sie junit.jar hinzu.

+0

Upvoted, weil ich hamcrest auf diese Weise hinzufügen musste, aber Sie gehen mich dort :) – th3morg

1

Wenn Sie auf diese (und ein paar andere Threads) auf diesen Fehler stoßen und das JAR zu den Abhängigkeiten nicht funktioniert, müssen Sie zum allgemeinen Java-Klassenpfad hinzufügen.

Ich fand diesen Fehler in OSX, wo Maven die Abhängigkeit herunterladen würde, aber nicht im Gabelmodus finden.

Das Hinzufügen aller Hamcrest-Jars zu Library/Java/Extensions hat das Problem endgültig behoben, wenn nichts anderes passieren würde.

+0

Dies funktionierte für mich auch, ich weiß nicht, warum das Hinzufügen der Maven-Abhängigkeiten nicht obwohl. –