Ich erhalte diesen Fehler in Java in meinem Junit-Testcode. Ich habe im Internet nachgeschlagen und es heißt, dass ich die junit.jar im Klassenpfad hinzufügen muss.
In Eclipse habe ich es im Klassenpfad der Projekteigenschaften hinzugefügt, aber es wird immer noch ein Initialisierungsfehler angezeigt. Was soll ich machen..?
Dies ist die vollständige Spur des Fehlers:
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 25 more
java
eclipse
junit
noclassdeffounderror
Chris Dennett
quelle
quelle
Antworten:
quelle
Nachtrag: Vor Ort habe ich eine "Benutzerbibliothek" erstellt und zu meinen Projekten hinzugefügt, die hat
quelle
Das gleiche Problem kann auftreten, wenn Sie das JUnit-Glas von der JUnit-Website heruntergeladen, aber vergessen haben, das Hamcrest-Glas herunterzuladen - beide sind erforderlich (die Anweisungen besagen, dass beide heruntergeladen werden müssen, aber ich habe übersprungen! Ups)
quelle
Aktualisieren Sie bei Verwendung in Maven das Artefakt junit: junit von z. B. 4.8.2 auf 4.11.
quelle
NoClassDefFoundError: org/junit
...caused by ClassNotFoundException: org.junit.runners.model.InitializationError
für mich behoben . Ich habe Junit 4.8 verwendet. Der Wechsel zu 4.11 hat funktioniert.Bei Eclipse konnte ich das oben genannte Problem mithilfe der folgenden Schritte lösen:
Klicken Sie mit der rechten Maustaste auf die Testdatei, die Sie ausführen möchten, und wählen Sie Ausführen als -> Konfigurationen ausführen -> Registerkarte Klassenpfad auswählen -> Zu den Bootstrap-Einträgen auswählen -> Erweitert auswählen -> Bibliothek hinzufügen auswählen -> JUnit auswählen -> Weiter -> Wählen Sie JUnit4 aus der Dropdown-Liste -> Fertig stellen
Wählen Sie dann Übernehmen -> Ausführen
quelle
Die Klasse org / hamcrest / SelfDescribing befindet sich nicht im Laufzeitklassenpfad.
quelle
Diese Schritte funktionierten für mich, als der Fehler zeigte, dass die Filterklasse fehlte (wie in dieser falsch diplomatischen Frage angegeben: JUnit: NoClassDefFoundError: org / junit / running / manipulation / Filter ):
Vielen Dank an diese Antworten, die mir den Hinweis für diese Lösung gegeben haben: https://stackoverflow.com/a/34067333/5538923 und https://stackoverflow.com/a/39987979/5538923 ).
quelle
Versuchen Sie die folgenden Schritte:
Es hat bei mir funktioniert.
quelle
Ich hatte das gleiche Problem, das Problem war in der @ContextConfiguration in meinen Testklassen, ich habe auch den Servlet-Kontext geladen, ich ändere nur:
@ContextConfiguration(locations = { "classpath*:**\*-context.xml", "classpath*:**\*-config.xml" })
zu:
@ContextConfiguration(locations = { "classpath:**\*-context.xml", "classpath:**\*-config.xml" })
und das ist es. Auf diese Weise lade ich nur alle Dateien mit dem Muster * -context.xml in meinem Testpfad.
quelle
quelle
Der Grund dafür ist, dass sich das "Hamcrest-Core" -Glas nicht im Klassenpfad befindet, da es nicht direkt mit dem Junit-Glas geliefert wird. Es gibt also zwei Möglichkeiten, dies zu beheben:
quelle
Hinzufügen meiner zwei Cent zu anderen Antworten.
Überprüfen Sie, ob Sie Ihre Testklasse nicht zufällig unter "
src/main/java
Üblich" erstellt habensrc/test/java
. Ersteres ist die Standardeinstellung in Eclipse, wenn Sie aus irgendeinem Grund eine neue Testklasse erstellen, die übersehen werden kann. So einfach kann das sein.quelle
In meinem Fall habe ich meine Bibliotheken stattdessen auf Classpath zu Modulepath hinzugefügt.
Dies funktioniert nur, wenn JUnit korrekt zu Classpath hinzugefügt wurde.
quelle
Dieser Fehler tritt auch auf, wenn im Klassenpfad zwei Versionen der Hamcrest-Bibliothek oder des Hamcrest-Core vorhanden sind.
In der POM-Datei können Sie die zusätzliche Version ausschließen und es funktioniert.
quelle
Selbst Junit4.11.jar hat nicht die hamcrest-core.jar. Ich habe explizit im Klassenpfad hinzugefügt und das Problem wurde behoben.
quelle
Ich habe dieses Video verfolgt: https://www.youtube.com/watch?v=WHPPQGOyy_Y, aber den Test konnte nicht ausgeführt werden. Danach habe ich alle heruntergeladenen Dateien gelöscht und den Junit mithilfe des Schrittes im Bild hinzugefügt.
quelle
Wenn Sie mehr als eine Java-Version haben, kann dies Ihr Programm beeinträchtigen.
Ich schlage vor, Sie laden JCreator herunter.
Klicken Sie anschließend auf Konfigurieren, Optionen und JDK-Profile. Löschen Sie die alten Java-Versionen aus der Liste. Klicken Sie dann auf die Wiedergabetaste. Ihr Programm sollte erscheinen.
Wenn dies nicht der Fall ist, drücken Sie Strg + Alt + O und dann erneut die Wiedergabetaste.
quelle