Beim Ausführen des JUnit-Tests in Eclipse wird folgende Fehlermeldung angezeigt:
Class not found com.myproject.server.MyTest
java.lang.ClassNotFoundException: com.myproject.server.MyTest
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
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)
Ich habe versucht, eine JUnit
Bibliothek im Klassenpfad hinzuzufügen, obwohl ich maven verwende, und die JUnit-Bibliothek befindet sich in der POM-Abhängigkeit.
Ich habe bereits versucht, das Projekt zu bereinigen, und einen neuen JUnit-Testfall mit dem JUnit-Plugin für Eclipse erstellt, wobei immer noch der gleiche Fehler angezeigt wird.
mvn clean test
sobald alleAntworten:
Dies scheint zu geschehen, weil nur der Quellcode kompiliert wird, wenn Sie ihn verwenden
mvn clean compile
(ich verwende maven 3.1.0, daher bin ich mir nicht sicher, ob er sich immer so verhalten hat).Wenn Sie ausführen
mvn test
, wird auch der Testcode kompiliert, aber dann werden die Tests ausgeführt (was möglicherweise nicht sofort wünschenswert ist, wenn Sie versuchen, sie über Eclipse auszuführen.) Um dies zu umgehentest-compile
, müssen Sie Ihre Maven-Befehlssequenz jederzeit hinzufügen du machst einmvn clean
. Zum Beispiel würden Sie laufenmvn clean compile test-compile
.quelle
Ich hatte ein ähnliches Problem mit meinen Tests und stellte irgendwo im Web fest, dass Sie in den Eigenschaften Ihres Projekts zum Pfad erstellen gehen und die Maven-Abhängigkeiten über die JRE-Systembibliothek verschieben müssen . Das scheint bei mir funktioniert zu haben.
quelle
Ich hatte das gleiche Problem und konnte es mithilfe der Antwort von @ slomek beheben, aber das Problem trat danach wieder auf.
Ich habe es schließlich behoben, indem ich den Ausgabeordner meines Projekts zur Ausführungskonfiguration des JUnit-Tests hinzugefügt habe. Schritte sind:
Project properties -> Java Build Path -> Default output folder
<project-folder>/bin
Run -> Run Configurations...
Classpath
RegisterkarteUser Entries
- auch wenn das Projekt dort bereits enthalten istAdvanced -> Add folder
, um den Ausgabeordner hinzuzufügenDieses Problem kann auf eine seltsame Projekteinrichtung in Eclipse zurückzuführen sein - z. B. auf einen Quellordner mit verschachtelten Maven-Projekten, die als einzelnes Projekt / Ordner importiert wurden (zumindest wurde mein Projekt so eingerichtet).
quelle
Wenn dieses Problem nur in Eclipse auftritt, kann es hilfreich sein, den Befehl Projekt -> Bereinigen ... für das ausgewählte Projekt auszuführen.
quelle
Nachdem ich hier alles ohne Verbesserung ausprobiert hatte, löste ich mein Problem, indem ich Eclipse einfach neu startete
quelle
Ich habe mein Problem durch Ausführen des Maven-Updates behoben. Klicken Sie mit der rechten Maustaste auf Projekt projizieren> Maven> Projekt aktualisieren
quelle
In meinem Fall hatte ich eine falsche Maven-Verzeichnisstruktur.
Welches sollte sein wie:
/ src / test / java / com.myproject.server.MyTest
Nachdem ich das behoben hatte, funktionierte alles wie ein Zauber.
quelle
In meinem Fall haben mir nur die nächsten Schritte geholfen, dieses Problem zu beheben:
quelle
Früher habe ich in diesem Fall immer mvn gemacht
eclipse:eclipse
und meine Eclipse neu gestartet, und es hat funktioniert. Nach der Migration zu GIT hat es für mich aufgehört zu arbeiten, was etwas seltsam ist.Grundproblem hier ist, dass Herr Eclipse die kompilierte Klasse nicht findet. Dann setze ich den Ausgabeordner als Project / target / test-classes, der standardmäßig von generiert wird
mvn clean install
ohne den Test zu überspringen, und mit der folgenden Problemumgehung fortgefahren:Option 1: Legen Sie den Klassenpfad für jeden Testfall fest
Eclipse -> Ausführen -> Konfigurationen ausführen -> unter JUnit-> mytest auswählen -> unter Registerkarte Klassenpfad-> Benutzereinträge auswählen-> Erweitert-> Ordner hinzufügen -> Auswählen -> Übernehmen-> Ausführen
Option 2: Erstellen Sie eine Klassenpfadvariable und fügen Sie sie für alle Testfälle in den Klassenpfad ein
Eclipse -> Windows -> Klassenpfadvariablen -> Neu -> [Name: Junit_test_cases_cp | Pfad:] -> ok Gehen Sie dann zu Eclipse-> Ausführen -> Konfigurationen ausführen -> JUnit-> wählen Sie mytest aus -> unter der Registerkarte Klassenpfad -> Benutzereinträge auswählen-> Erweitert-> Klassenpfadvariablen hinzufügen-> Wählen Sie Junit_test_cases_cp-> ok- > Übernehmen-> Ausführen
Dies ist das einzige, was derzeit für mich funktioniert, nachdem ich alle Vorschläge online ausprobiert habe.
quelle
Ich hatte das gleiche Problem mit einem Gradle-Projekt mit einem Test-SourceSet mit zwei Ressourcenverzeichnissen.
Dieses Snippet stammt von einem main-module.gradle und fügt dem Test SourceSet ein Ressourcenverzeichnis hinzu:
Dabei hatte ich zwei Ressourcenverzeichnisse, die sich auf den Test SourceSet des Projekthauptmoduls bezogen:
../other-module/src/test/resources src / test / resources (relativ zum Hauptmodulordner, automatisch vom Java-Plugin hinzugefügt)
Ich finde heraus, dass, wenn ich zwei Dateien mit demselben Namen in beiden Quellverzeichnissen hatte, etwas in der Phase der Prozessressourcen schief gelaufen ist. Infolgedessen wurde keine Kompilierung gestartet und aus diesem Grund wurde keine .class in das bin-Verzeichnis kopiert, in dem JUnit nach den Klassen suchte. Die ClassNotFoundException ist verschwunden, als nur eine der beiden Dateien umbenannt wurde.
quelle
NoClassDefFoundError bedeutet wirklich, dass die Klasse nicht initialisiert werden kann. Es hat nichts zu tun, die Klasse zu finden. Ich habe diesen Fehler beim Aufrufen von trim () für einen Null-String erhalten.
JUnit zeigt keine NullPointerException an. Die Zeichenfolge ist bei normaler Ausführung nicht null, da ich die Zeichenfolge aus einer Eigenschaftendatei abrufe, die für Tests nicht verfügbar ist.
Mein Rat ist, Teile aus der Klasse zu entfernen, bis Ihre Tests bestanden sind. Dann können Sie bestimmen, welche Zeile den Fehler ausgibt.
quelle
Ich hatte ein ähnliches Problem mit meinem Eclipse Helios, das Junits debuggt. Mein Problem war wenig anders, da ich Junits erfolgreich ausführen konnte, aber als ich beim Debuggen derselben JUNITs ClassNotFoundException erhielt.
Ich habe alle möglichen Lösungen ausprobiert, die auf Stackoverflow.com und in anderen Foren verfügbar sind, aber nichts scheint zu funktionieren. Nachdem ich mich fast zwei Tage lang mit diesem Problem beschäftigt hatte, fand ich schließlich die Lösung dafür heraus.
Wenn keine der Lösungen zu funktionieren scheint, löschen Sie einfach den in Ihrem Arbeitsbereich erstellten Metadatenordner. Dies würde einen zusätzlichen Aufwand für den Import der Projekte und aller von Ihnen vorgenommenen Konfigurationen verursachen, aber diese werden dieses Problem sicherlich lösen.
Hoffe das hilft.
quelle
Diese Schritte haben bei mir funktioniert.
quelle
1-mvn-Sonnenfinsternis: Sonnenfinsternis
2- Projekt alle Projekte reinigen
3- Neustart
quelle
Als weitere Antwort ist zu erwähnen, dass, wenn Sie eGit verwenden und Ihr Klassenpfad beispielsweise aufgrund eines Testabdeckungstools wie Clover aktualisiert wird, manchmal ein Bereinigungsproblem auftritt, bei dem der Inhalt von nicht vollständig gelöscht wird
/path/to/git/repository/<project name>/bin/
Im Wesentlichen habe ich die Fehlerprotokollansicht von Eclipse verwendet, festgestellt, was während dieser Bereinigung Probleme verursacht hat, zum Quellverzeichnis navigiert und das Verzeichnis manuell gelöscht
<project name>/bin
. Sobald das erledigt war, ging ich zurück zu Eclipse und aktualisierte (F5
) mein Projekt und der Fehler verschwand.quelle
Überprüfen Sie, ob Ihr Projekt als Maven-Projekt und nicht nur als reguläres Java-Projekt geöffnet ist. Eigentlich ein Kinderspiel, aber das ist genau der gleiche Grund, warum Sie es vielleicht verpassen.
quelle
Dies kann auch an "[ERROR] In dieser Umgebung wird kein Compiler bereitgestellt. Möglicherweise wird auf einer JRE anstelle eines JDK ausgeführt?"
quelle
Ich hatte das gleiche Problem. Ich habe es gelöst, indem ich die externe JUnit-JAR-Abhängigkeit entfernt habe, die ich durch externen Download aus dem Internet hinzugefügt habe. Aber dann ging ich zu Projekt-> Eigenschaften-> Pfad erstellen-> Bibliothek hinzufügen-> junit-> wählte die Version (ex junit4) -> anwenden.
Die Abhängigkeit wurde automatisch hinzugefügt. es hat mein Problem gelöst.
quelle
Durch Dummy-Änderungen und Speichern der Testklasse kann das Problem behoben werden. Die .class wird automatisch erstellt
quelle
Es scheint Kompilierungsproblem. Führen Sie das Projekt als Maven-Test und dann als JUnit-Test aus.
quelle
Für Projekte, die keinen Maven verwenden: Dies funktionierte für mich https://ihategeek.wordpress.com/2012/04/18/eclipse-junit-test-class-not-found/
Hinzufügen von jre und project src unten in der Reihenfolge und Exportieren im Erstellungspfad
quelle
Bitte überprüfen Sie, ob Sie junit4 als Abhängigkeit hinzugefügt haben.
z.B
quelle
Könnten Sie die platzieren vergessen Hauptklasse und Testfallklasse in / src / test / java. Überprüfen Sie es einmal.
quelle