Wenn ich versuche, meinen JUnit-Test aus Eclipse heraus zu starten, erhalte ich eine "ClassNotFoundException". Wenn Sie "mvn test" von der Konsole aus ausführen, funktioniert alles einwandfrei. Es gibt auch keine Probleme in Eclipse.
Meine Projektstruktur ist folgende:
edit: Wie kann die Klasse nicht gefunden werden? Es ist eine einfache HelloWorld-Anwendung ohne spezielle Bibliotheken.
Hier ist die Run-Konfiguration meines JUnits: alt text http://www.walkner.biz/_temp/runconfig.png
Testklasse (aber wie gesagt, es funktioniert auch nicht mit einer einfachen HelloWorld ...):
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import biz.prognoserechnung.domain.User;
import biz.prognoserechnung.domain.UserRepository;
import biz.prognoserechnung.domain.hibernate.UserHibernateDao;
public class UserDaoTest {
/**
* the applicationcontext.
*/
private ApplicationContext ctx = null;
/**
* the user itself.
*/
private User record = null;
/**
* Interface for the user.
*/
private UserRepository dao = null;
@Before
public void setUp() throws Exception {
String[] paths = { "WEB-INF/applicationContext.xml" };
ctx = new ClassPathXmlApplicationContext(paths);
dao = (UserHibernateDao) ctx.getBean("userRepository");
}
@After
public void tearDown() throws Exception {
dao = null;
}
@Test
public final void testIsUser() throws Exception {
Assert.assertTrue(dao.isUser("John", "Doe"));
}
@Test
public final void testIsNoUser() throws Exception {
Assert.assertFalse(dao.isUser("not", "existing"));
Assert.assertFalse(dao.isUser(null, null));
Assert.assertFalse(dao.isUser("", ""));
}
}
Ich bin mehrmals auf diese Situation gestoßen und nach vielen Versuchen habe ich die Lösung gefunden.
Überprüfen Sie Ihren Projekterstellungspfad und aktivieren Sie bestimmte Ausgabeordner für jeden Ordner. Gehen Sie nacheinander durch jeden Quellordner Ihres Projekts und legen Sie den Ausgabeordner fest, den Maven verwenden würde.
Beispielsweise sollte src/main/Java
Ihres Webprojekts target/classes
unter dem Webprojekt und Testklassen target/test-classes
auch unter dem Webprojekt und so enthalten sein.
Mit dieser Konfiguration können Sie Komponententests in Eclipse ausführen.
Noch ein Hinweis: Wenn für die Tests Ihres Webprojekts Konfigurationsdateien erforderlich sind, die sich unter den Ressourcen befinden, stellen Sie sicher, dass Sie diesen Ordner als Quellordner angeben und die richtige Build-Pfad-Konfiguration vornehmen.
Ich hoffe es hilft.
Carlos Ansatz half! Eclipse - Java.lang.ClassNotFoundException
Versuchen Sie, den Klassenpfad der Junit-Run-Konfiguration zu überprüfen:
funktioniert bei mir.
ihr Build-Klassenpfad ist korrekt, weshalb Sie kompilieren können. Der Klassenpfad für Ihre JUnit muss überprüft werden. Gehen Sie zum Menü Ausführen und wählen Sie "Laufdialog öffnen". Dort sollten Sie links einen Baum mit JUnit als Option sehen. Öffnen Sie diesen Knoten und suchen Sie Ihren Test aus und wählen Sie ihn aus. Im rechten Fensterbereich sehen Sie eine Registerkarte für Klassenpfad. Achten Sie darauf, dass Ihre Klasse, die der Test zu instanziieren versucht, gefunden wird.
edit:
dies scheint ein Problem mit Maven zu sein und sein Verhalten nach einem Release hat die Standard-Eclipse-Ausgabeordner geändert. Ich habe gesehen, wo Lösungen beschrieben wurden
mvn clean test
macht den Trick oder bei den ersten drei gab es Berichte über wiederkehrende Probleme. das letzte sieht für mich am besten aus, aber wenn es nicht funktioniert, versuchen Sie es bitte mit den anderen.
Möglicherweise fehlt die Klassendatei in Ihrem Build-Ordner. Eine Lösung ist das Projekt bereinigen und neu erstellen.
Dies war meine Lösung für das Problem. Natürlich können viele Dinge dazu führen. Für mich war es so, dass Maven2 (nicht das Plugin für Eclipse) das Eclipse-Profil aufbaute, um einen anderen Builder (AspektJ) zu verwenden, aber ich hatte das Plugin nicht in Eclipse.
http://rbtech.blogspot.com/2009/09/Eclipse-galileo-javalangclassnotfoundex.html
Prost Ramon Buckland
Ich hatte genau das gleiche Problem, aber ich habe es herausgefunden! Gehen Sie zu Ihrer Projektdatei und klicken Sie mit der rechten Maustaste darauf. Klicken Sie dann auf Refresh
oder drücken Sie F5. Dann versuchen Sie es und führen Sie es aus. Wenn es immer noch nicht funktioniert, vergessen Sie es einfach, da ich das gleiche Problem hatte und es bedeutet nur, dass Ihre Version von Eclipse Müll ist.
Hier gibt es viele verworrene Vorschläge.
Dieses Problem ist bei Maven-Projekten mehrmals aufgetreten, nachdem Ressourcen durch Ziehen und Ablegen verschoben oder Klassennamen umgestaltet wurden.
Wenn dies der Fall ist, kopieren Sie das Problem Testfall (.Java
) einfach über den Terminal-/Dateibrowser an einen anderen Ort, right-click -> Delete
in Eclipse (und verschieben Sie es nicht), und löschen Sie den Datenträger, wenn Sie die Option haben. Verschieben/Kopieren Sie die kopierte Datei in die Originaldatei Wählen Sie Ihr Projekt in Eclipse aus und drücken Sie F5, um die Ressourcen zu aktualisieren.
Dies ist schnell und einfach zu bewerkstelligen und hat das Problem jedes Mal dauerhaft für mich behoben.
Sachins Recht: Auch bei einem korrekten Klassenpfad zeigt die Registerkarte "Probleme", dass einige Abhängigkeiten oder die Ressource/das Projekt einen Fehler aufweist, der behoben werden muss, damit maven beim Erstellen oder Ändern von Klassen automatisch Klassen erstellt und erstellt Ihre Testklasse.
"Hallo,
Es ist sehr alt Jul (in welchem Jahr), aber ich hatte das gleiche Problem.
Tatsächlich wurde festgestellt, dass Eclipse keine Klassendatei für die Java-Datei generieren konnte. Klassenpfad war korrekt.
Sehen Sie sich die Problemregisterkarte an und prüfen Sie, ob Ihrem Projekt etwas/Datei fehlt. Sie können ein neues Projekt erstellen und Dateien nacheinander hinzufügen und erstellen, bis das Kompilieren und Erstellen von Klassen gestoppt ist.
ecplise konnte jedoch nicht richtig funktionieren, da 4 von 20 Java-Dateien ein einziges Image verwendeten, das fehlte. und als Ergebnis wurde keine der Java-Dateien kompiliert.
CLASSPATH ist hier kein Thema. "
Ich löse diesen Bulit-Pfad ---> Bibliotheken ---> Bibliothek hinzufügen ---> Junit Check Junit4
Wir hatten die genaue Ausnahme (mit SpringSource Tools, Tomcat unter Win7), und der Grund war, dass wir einen Dateinamen (eine umbenannte Datei) von SubDomain.Java in Subdomain.Java (D vs d) umbenannt hatten und irgendwie kollidierte, obwohl SpringSource auftrat zeigt den neuen Namen Subdomain.Java. Die Lösung bestand darin, die Datei (über SpringSource) zu löschen und unter dem Namen Subdomain.Java erneut zu erstellen und den vorherigen Inhalt durch Kopieren und Einfügen zu kopieren. So einfach ist das.
Alles, was ich getan habe, war Eigenschaften -> Java-Erstellungspfad -> Reihenfolge und Export -> Alle nicht aktivierten Kästchen aktiviert -> Junit ganz nach oben verschoben
Das Projekt aus Eclipse (nicht von der Festplatte) zu löschen, was den Arbeitsbereich säubert und das Projekt erneut in Eclipse importiert, hat für mich funktioniert.
Ich hatte alle Lösungen auf dieser Seite ausprobiert: Projekt aktualisieren, neu erstellen, alle Projekte bereinigen, Eclipse erneut starten, Projekte neu importieren (sogar), Maven neu erstellen und aktualisieren. Nichts hat geklappt. Was did work war, die Klasse in einen neuen Namen zu kopieren der gut läuft - bizarr aber wahr.
Nachdem ich mir dies einige Zeit überlassen hatte, habe ich es einfach behoben durch:
Run
Run Configurations
auswählenRun Configuration
, indem Sie auf Löschen klicken oder auf das rote X klicken.Es muss etwas mit der zwischengespeicherten Laufkonfiguration vermasselt worden sein.
Versucht
Link : [here][1]
Open your run configurations
Click on the jUnit-Test you want to start
go to the classpath tab
Try to add a folder (click on user entries, click on advanced, click on add folders,click on ok and search the outputfolder for your test classes(those you find under projektproperties Java build path, source))
arbeitete nach
Maven 2 LifeCycle >> Test
Hmm, sieht ein bisschen bizarr aus, versuchen Sie es mit der folgenden Anmerkung an der Spitze der Klasse:
@RunWith(SpringJUnit4ClassRunner.class)
public class UserDaoTest {
}
und lass mich wissen, wie es dir geht.
Vergewissern Sie sich, dass der Build automatisch aktiviert ist. Wenn Sie sicherstellen möchten, dass Ihre Testklassen korrekt kompiliert werden, löschen Sie den Maven-Zielordner (und jeden Bin-Ordner, den Eclipse möglicherweise verwendet). Verwenden Sie auch m2Eclipse, da ich das etwas problematisch finde.
Ich wurde auch von diesem Problem betroffen und konnte eine ausreichende Lösung für meinen Fall finden. Wenn sich in Ihrem Eclipse-Projekt eine .classpath-Datei im Projektstammverzeichnis befindet (siehe Navigator-Ansicht anstelle der Package Explorer-Ansicht), stellen Sie sicher, dass Ihr Maven-Klassenpfadeintrag vor dem JRE-Container-Klassenpfadeintrag angezeigt wird.
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.maven.ide.Eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="con" path="org.Eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>
Wenn Ihr Projekt über keine .classpath-Datei verfügt, können Sie den Java-Erstellungspfad Ihres Projekts bearbeiten, um die Reihenfolge und den Export zu ändern. Wenn Ihr Projekt über die .classpath-Datei verfügt und Sie nur Ihre Reihenfolge im Java-Erstellungspfad ändern, werden Sie feststellen, dass die Reihenfolge nicht betroffen ist und das Problem weiterhin auftritt.
Und ein Projekt reinigt nie etwas, nachdem Sie die Änderung vorgenommen haben.
Normalerweise tritt dieses Problem auf, wenn das Java-Anwendungsprogramm Java
ausgeführt wird, das die Klassendatei nicht finden kann.
Meistens in maven project sehen wir dieses Problem, weil Eclipse-Maven sync issue. So lösen Sie dieses Problem: Maven-> Update Configuration
klicken Sie auf project->properties->Java build path->Source
und prüfen Sie, ob die src
-Ordner noch gültig sind oder vor kurzem entfernt wurden. Korrigieren Sie einen fehlenden Pfad oder einen falschen Pfad und erstellen Sie den Test erneut. Es wird das Problem beheben.
Die Lösung für mein Problem war ähnlich: Die Bibliotheken waren ungültig. Wenn Sie in der .classpath-Datei des Projekts nachschauen, sehen Sie classpathentry-Tags mit dem Schlüssel/Wert kind = "lib". Einige von mir waren falsch.
Ich habe dies nicht entdeckt, bis ich die Validierungseinstellungen deaktiviert habe. Das heißt, es gab so viele Fehler in den JSP-Dateien usw., dass die Klassenpfadfehler nicht offensichtlich waren (oder möglicherweise sogar auftauchten). Infolgedessen wurde nichts in die Zielausgabeordner kompiliert, jedoch keine hilfreichen Fehlermeldungen.
die meisten von uns werden diese Ausnahme erhalten. Wenn Sie diesen Fehler erhalten haben, haben Sie .class-Dateien im richtigen Ordner abgelegt.
In Webanwendungen sollten sich alle .class-Dateien im Ordner WEB-INF\Classes befinden. Wenn Sie eine Web-App in Eclipse ausführen, führen Sie die folgenden Schritte aus
Schritt 1: Klicken Sie mit der rechten Maustaste auf Projektordner und wählen Sie Eigenschaften .__ Schritt 2: Klicken Sie auf "Java Build Path", um verschiedene Registerkarten wie "Quelle", "Projekte", "Bibliotheken" usw. anzuzeigen. Schritt 3: Wählen Sie Quelle Mappe. Darunter sehen Sie Ihre Projektdetails Schritt 4: Im Ordner "Source" wird die Option Default Output Folder angezeigt. Hier müssen Sie den Klassenordner unter WEB-INF . angeben. Geben Sie einfach den Pfad wie Projektname/WebContent/WEB-INF/classes die Struktur hängt von Ihrer Anwendung ab .__ "Klassen" -Ordner erstellen. Eclipse erstellt es für Sie. Schritt 5: Klicken Sie auf "OK" und führen Sie die Projektbereinigung durch. Das ist es, Ihre App wird jetzt ausgeführt.
Ich hatte das gleiche Problem. Alles was ich tat, war
ich). Eclipse-Artefakte generiert
mvn clean Eclipse:eclipse
ii). Aktualisieren Sie das Projekt und führen Sie den Junit-Test erneut aus. Sollte gut funktionieren.
DOUBLE-CHECK das Eclipse-Dialogfeld "Web Deployment Assembly".
Dies kann gefunden werden: Projekteigenschaften-> Bereitstellungsassembly.
Vor kurzem hatte ich ein Eclipse-Plugin, das eines meiner Webprojekte modifizierte, und es fügte - mysteriös - die Maven-Testverzeichnisse/src/test/Java,/src/test/resources der Deployment Assembly hinzu. UGGGG !!!
Aus diesem Grund funktionierte mein Projekt gut, als ich gerade einen direkten Weg zu Tomcat aufbaute und implementierte, keine ClassNotFoundExceptions ... Als ich jedoch die Bereitstellung über Eclipse durchführte, Whammo !! Ich bekomme ClassNotFoundExceptions, da der Testcode bereitgestellt wird.
Eric
Ich habe Eclipse - Java.lang.ClassNotFoundException beim Ausführen von Junit-Tests gesehen. Ich hatte eine der externen JAR-Dateien gelöscht, die dem Projekt hinzugefügt wurde. Nach dem Entfernen des Verweises dieser JAR-Datei auf das Projekt von Eclipse. Ich könnte die Junit-Tests durchführen.
Ich verwende gradle mit Eclipse und habe mich heute derselben Herausforderung gestellt. Ich habe verschiedene Lösungsansätze ausprobiert, aber der einzige Weg, der mir geholfen hat, war, den Befehl gradlew clean
auszuführen.
P.S. => Kombiniere den "build" nicht mit dem oben genannten Befehl.
Hat mir geholfen, versuch dein Glück.
Ich bin kürzlich in Eclipse auf einen Fehler gestoßen, d. H. Der Eclipse IDE konnte die Unit-Testklasse nicht finden, egal wie ich die Konfigurationen ändere. Wie ich aus den vorherigen Beiträgen hier und auf anderen Websites erfahren habe, habe ich den Klassenpfad und die Quellinformationen doppelt und dreifach geprüft und den Quellordner und die Quellbibliotheken sowohl in "Run Configuration" als auch in "Java Build Path" nach oben und unten verschoben "config - Fenster, und ich habe das Projekt auch gereinigt und neu erstellt, aber keiner der Tricks funktioniert für mich. Das spezifische Java-Projekt ist ein altes, von ANT kompiliertes Projekt und enthält viele Gläser in der Eclipse-Bibliothek.
Dann habe ich die Komponententestklasse geändert, um eine main () - Methode hinzuzufügen und mit der rechten Maustaste auf "Ausführen als" einer Java-Anwendung anstelle des JUnit-Tests zu klicken. Plötzlich scheint Eclipse aufzuwachen und die Klasse richtig zu identifizieren. Danach habe ich wieder auf eine Unit-Testanwendung umgestellt, und es funktioniert immer noch.
Dies scheint ein Fehler in Eclipse zu sein. Ich vermute, die große Anzahl von Bibliotheken (> 260) kann die Fähigkeit der JVM, meine JUnit-Klasse zu finden, verwechseln.
Führen Sie das Projekt als Maven-Test und anschließend als JUnit-Test aus.
Bitte verweisen Sie auf die Korrektur des JDK unter Windows> Voreinstellungen> Java> Installierte JRE.
Zeigen Sie nicht auf jre, sondern auf ein ordnungsgemäßes JDK. Ich habe auf JDK 1.6U29 hingewiesen und das Projekt aktualisiert.
Danach ist das Problem weg und jUnit-Tests funktionieren einwandfrei.
Vielen Dank,
- Tapas
Das Ändern der Reihenfolge der Klassenpfad-Artefakte im Java-Erstellungspfad hat es für mich gelöst.
Dies sollte es beheben.
Das bedeutet, dass Ihre pom.xml noch offene Probleme hat. Öffne die Problemansicht entsprechend lösen. Dann können Sie die Testfälle erfolgreich ausführen, ohne auf die Klassenausnahme zu stoßen.
JUnit 4.4 wird von der JMockit/JUnit-Integration nicht unterstützt. Dies wird nur von Versionen 4.5 oder neuer unterstützt.
Gehen Sie zum Build-Pfad -> Quelle und aktivieren Sie die Option "Optionale Probleme beim Kompilieren ignorieren" für alle Quellordner.
Stellen Sie sicher, dass Ihre Teststart-Konfiguration NICHT die folgenden Zeilen enthält: OR Versuchen Sie, die automatische Verwaltung der Maven-Abhängigkeiten zu aktivieren.
<stringAttribute key="org.Eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.maven.ide.Eclipse.launchconfig.classpathProvider"/>
<stringAttribute key="org.Eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.Eclipse.launchconfig.sourcepathProvider"/>
Haben Sie versucht, mit der rechten Maustaste auf Ihre Projektwurzel zu klicken, "Eigenschaften" auszuwählen und sicherzustellen, dass der CLASSPATH korrekt ist? Wenn ich mich recht erinnere, machst du es so.
Über die Art und Weise, wie Eclipse Unit-Tests ausführt, müssen Sie die Junit-JAR auf besondere Weise zur Laufzeit CLASSPATH hinzufügen.
Ich benutze IntelliJ, also habe ich diese Probleme nicht.
Ich würde Eclipse selbst überprüfen, aber ich ziehe es vor, es nicht auf meinem Desktop zu haben.
Ich habe alles versucht, was ich in diesem langen Beitrag gelesen habe. Unglaublich, was für mich funktioniert hat, statt auf die Testklasse zu klicken und Run as JUnit test
auszuwählen, auf test method zu klicken und als JUnit test
auszuführen. Ich habe keine Idee warum?
Ich stand vor demselben Problem, für mich ist das Problem anders. Es kam, weil einige der Abhängigkeiten von Maven nicht heruntergeladen wurden.
a. I went through properties -> Java Buildpath -> Maven Dependencies and identified the missed libraries.
b. Removed the missed libraries artifacts from pom.xml
c. Downloaded the libraries and added them explicitly.
Der JUnit-Test von Eclipse gab mir auch NoClassDefFoundError . Beim Ausführen von 'mvn clean test' von der Befehlszeile aus gab es folgenden Fehler in mehreren Jars: und erneutes Ausführen von 'mvn clean test' löste mein Problem.