Während des Testens junit
in eclipse
bekomme ich Folgendes Exception
:
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
Ich habe eine junit.jar
Bibliotheksdatei hinzugefügt .
Ich habe verschiedene Versionen von junit.jar versucht: 4.4
, 4.8
usw.
Wie behebe ich diese Ausnahme?
junit.jar
ist nicht mit dem Problem verbundenharcrest
Glas ist die Hierarchie gleich? wie inorg > hamcrest > SelfDescribing
, oder ist es im Stammordner des Glases?Antworten:
Fügen Sie
hamcrest-all-X.X.jar
Ihrem Klassenpfad hinzu .Die neueste Version vom Februar 2015 ist 1.3: http://code.google.com/p/hamcrest/downloads/detail?name=hamcrest-all-1.3.jar&can=2&q=
quelle
hamcrest-all-X.X.jar
ist genug, während viel kleiner.Nach der JUnit GitHub Team - Website ( https://github.com/junit-team/junit/wiki/Download-and-Install )
junit.jar
undhamcrest-core.jar
sind in der Classpath beide benötigen , wenn JUnit 4.11 verwenden.Hier ist der Maven-Abhängigkeitsblock zum Einschließen von Junit und Hamcrest.
quelle
Ein paar Schritte müssen Sie befolgen:
quelle
Funktioniert für mich: IntelliJ IDEA 13.1.1, JUnit4, Java 6
Ich habe die Datei im Projektpfad geändert: [PROJECT_NAME] .iml
Ersetzt:
Durch:
Die endgültige IML-Datei lautet also:
PS: Speichern Sie die Datei und lassen Sie sie nicht von IntelliJ Idea neu laden. Nur einmal.
quelle
Sie benötigen junit-dep.jar, da die junit.jar eine Kopie der alten Hamcrest-Klassen enthält.
quelle
Dieses Problem liegt an Ihrem Klassenpfad miss hamcrest-core-1.3.jar. Um dies zu beheben, fügen Sie hamcrest-core-1.3.jar hinzu, während Sie junit-4.XX.jar in Ihren Klassenpfad einfügen.
Zuerst stoße ich auch auf dieses Problem, aber nachdem ich auf die offizielle Seite verwiesen und hamcrest-core-1.3.jar in den Klassenpfad mit der Befehlszeile eingefügt habe, funktioniert es schließlich ordnungsgemäß.
quelle
Stellen Sie in der Regel immer sicher, dass sich hamcrest vor allen anderen Testbibliotheken im Klassenpfad befindet, da viele dieser Bibliotheken hamcrest-Klassen enthalten und daher möglicherweise mit der von Ihnen verwendeten hamcrest-Version in Konflikt stehen. Dadurch werden die meisten Probleme des von Ihnen beschriebenen Typs behoben.
quelle
Nur für den Fall, dass hier jemand Netbeans verwendet und das gleiche Problem hat, müssen Sie nur noch etwas tun
Dies sollte das Problem lösen
quelle
Sie müssen die Hamcrest-Core-JAR wie hier beschrieben zum Klassenpfad hinzufügen: https://github.com/junit-team/junit4/wiki/Download-and-Install
quelle
Es klingt wie ein Klassenpfadproblem, daher gibt es verschiedene Möglichkeiten, dies zu tun. Woher kommt org / hamcret / SelfDescribing? Ist das deine Klasse oder in einem anderen Glas?
Gehen Sie zu Ihrem Projektpfad und fügen Sie auf der Registerkarte Bibliotheken eine Bibliothek hinzu. Sie sollten in der Lage sein, JUnit für Ihr Projekt auszuwählen. Dies ist ein bisschen anders als nur die JUnit-JAR-Datei in Ihrem Projekt.
Überprüfen Sie in Ihrer Ausführungskonfiguration für den JUnit-Test den Klassenpfad. Sie können dies wahrscheinlich beheben, indem Sie hinzufügen, dass Ihr Klassenpfad diese SelfDescribing-Klasse dort sehen kann. Die Option Ausführen in Eclipse bietet verschiedene Optionen für die JUnit-Optionen.
quelle
Wenn dieses Problem in einem RCP-Projekt auftritt, kann dies daran liegen, dass JUnit explizit importiert wurde.
Überprüfen Sie den Editor auf Ihre Registerkarte
plugin.xml
unterDependencies
, entfernen Sie dieorg.junit
aus den importierten Paketen und fügen Sieorg.junit
sie den erforderlichen Plug-Ins hinzu.quelle
Das Problem ist, wenn Sie Eclipse so einrichten, dass es auf JRE anstelle von JDK verweist . JRE hat
junit4.jar
imlib/ext
Ordner, aber nichthamcrest.jar
:) Die Lösung besteht also darin, installierte JREs in Eclipse zu überprüfen, die vorhandene zu entfernen und eine neue zu erstellen, die auf Ihr JDK verweist .quelle
Die einfachste Möglichkeit, das Problem zu lösen, besteht darin, die neueste Version von hamcrest-code.jar in Ihren CLASSPATH zu kopieren. Dies ist die Datei, in der Sie andere .jar-Dateien speichern, die zum Kompilieren und Ausführen Ihrer Anwendung benötigt werden.
das könnte zB sein: C: / ant / lib
quelle
Dies geschieht, wenn Sie Ant über die Befehlszeile ausführen. Die impliziten Benutzerabhängigkeiten werden am Ende im Klassenpfad hinzugefügt und haben Vorrang vor dem vom Projekt hinzugefügten Klassenpfad. Führen Sie Ant mit
-nouserlib
Flagge aus. Die impliziten Abhängigkeiten würden aus dem Klassenpfad ausgeschlossen.quelle
Es gibt eine bessere Antwort, um dieses Problem zu lösen. Abhängigkeit hinzufügen
quelle
Ich hatte das gleiche Problem, die Lösung besteht darin, im Build-Pfad / Plugin das JAR org.hamcrest.core_1xx hinzuzufügen. Sie finden es in Eclipse / Plugins.
quelle
Ein paar Schritte müssen Sie befolgen:
Das funktioniert bei mir ...
quelle