Eclipse - java.lang.ClassNotFoundException

95

Beim Versuch, meinen JUnit-Test von Eclipse aus zu starten, wird eine "ClassNotFoundException" angezeigt. Wenn Sie "mvn test" von der Konsole aus ausführen, funktioniert alles einwandfrei. Außerdem wurden in Eclipse keine Probleme gemeldet.

Meine Projektstruktur ist folgende:

  • Elternprojekt (Pom-Verpackung)
    • Webprojekt (War-Packaging - mein JUnit-Test ist hier)
    • Flex-Projekt
    • Konfigurationsprojekt

edit: Wie kann die Klasse nicht gefunden werden? Es ist eine einfache HelloWorld-Anwendung ohne spezielle Bibliotheken.

Hier ist die Run-Konfiguration meiner JUnit: Alternativtext 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("", ""));
    }
}
Swalkner
quelle
3
Ich erhalte den gleichen Fehler, wenn ich versuche, eine einfache HelloWorld-Klasse ohne JUnit auszuführen ... Genauer gesagt: java.lang.NoClassDefFoundError:
HelloWorld Auslöser
ClassNotFoundException wird ausgelöst, wenn versucht wird, über eine Klasse nachzudenken. NoClassDefFoundError wird ausgelöst, wenn Sie versuchen, die Klasse in einem normalen Methodenaufruf zu verwenden.
Akf
Können Sie den Code für Ihre Testklasse anzeigen?
Akf
Haben Sie Build automatisch ein- oder ausgeschaltet?
Jon
Build automatisch wird eingeschaltet
Swalkner

Antworten:

193

Ich bin mehrmals auf diese Situation gestoßen und habe nach vielen Versuchen die Lösung gefunden.

Überprüfen Sie Ihren Projekterstellungspfad und aktivieren Sie für jeden Ordner bestimmte Ausgabeordner. Gehen Sie nacheinander durch jeden Quellordner Ihres Projekts und legen Sie den Ausgabeordner fest, den maven verwenden würde.

Zum Beispiel, Ihr Web - Projekt src/main/javasollte target/classesunter dem Web - Projekt, sollen Testklassen haben target/test-classesauch unter dem Web - Projekt und so.

Mit dieser Konfiguration können Sie Komponententests in Eclipse ausführen.

Nur noch ein Hinweis: Wenn für die Tests Ihres Webprojekts einige Konfigurationsdateien erforderlich sind, die sich unter den Ressourcen befinden, müssen Sie diesen Ordner als Quellordner einschließen und die richtige Konfiguration für den Erstellungspfad vornehmen.

Ich hoffe es hilft.

Carlos
quelle
1
Hallo Carlos, vielen Dank für deinen Rat. Aber es hat leider nicht geholfen. Ich habe den Quellordnern / src / main / java (Ziel / Klassen) und / src / Test / Java (Ziel / Testklassen) sowie src / main / resources (applicationContext.xml, einige Eigenschaften - Ziel / Klassen) hinzugefügt ). Gleiches Problem - Beim Starten von src / test / java / UserDaoTest.java als JUnit-Test von Eclipse wird "Klasse nicht gefunden UserDaoTest java.lang.ClassNotFoundException: UserDaoTest" angezeigt. Zumindest ist das ein bisschen anders als die ursprüngliche Fehlermeldung ...
Swalkner
5
Sie sind auf dem richtigen Weg, prüfen Sie, ob sich die UserDaoTest-Klasse im entsprechenden Ausgabeordner in Ihrem Dateisystem befindet (Wie Sie vielleicht wissen, kompiliert Eclipse alle Ihre Quelldateien und legt sie unter anderem im angegebenen Ausgabeordner ab Tests starten können). Wenn die Klasse nicht im Ausgabeordner angezeigt wird, überprüfen Sie die Einschluss- / Ausschlussfilter des Erstellungspfads für diesen bestimmten Ordner. Viel Glück.
Carlos
Für mich hat dies das Problem nicht behoben. Es stellte sich heraus, dass es sich um ein AspectJ-Problem handelte. Wenn Sie AspectJ verwenden, versuchen Sie, die AspectJ-Funktionen zu entfernen und zu lesen - für mich gearbeitet
Stefan Haberl
1
Hatte das gleiche Problem. Ich denke, es ist ein Eclipse-Projekt - Maven-Git-Problem. Das schränkt es nicht wirklich ein, aber das Löschen aller Metadatenordner (.project, .was auch immer ...), das Löschen des Projekts und das erneute Importieren nur als Maven-Projekt funktionierten für mich. Ich fand auch etwas, von dem Eclipse-Junit nicht wusste, dass es es kann: Durch Hervorheben der Testmethode und Auswählen von RunAs-Junit wird nur diese bestimmte Testmethode ausgeführt, nicht der gesamte Test! Nicht mehr @Ignoreüberall und GUI-Verknüpfungen!
Bgs
War mit dem gleichen Problem konfrontiert, habe ich einfach Eclipse -> Projekt -> sauber verwendet und es hat funktioniert. Mvn sauber hat nicht funktioniert.
Nutan
46

Carlos Ansatz half! Eclipse - java.lang.ClassNotFoundException

Versuchen Sie, den Klassenpfad der Junit-Run-Konfiguration zu überprüfen:

  1. Öffnen Sie Ihre Laufkonfigurationen
  2. Klicken Sie auf den jUnit-Test, den Sie starten möchten
  3. Gehen Sie zur Registerkarte Klassenpfad
  4. Versuchen Sie, einen Ordner hinzuzufügen (klicken Sie auf Benutzereinträge, klicken Sie auf Erweitert, klicken Sie auf Ordner hinzufügen, klicken Sie auf OK und durchsuchen Sie den Ausgabeordner nach Ihren Testklassen (die finden Sie unter projektproperties java build path, source)).

funktioniert bei mir.

CoffeJunky
quelle
2
Ist das nicht sehr seltsam? Es hat bei mir funktioniert, aber das Zielklassenverzeichnis ist Teil des Erstellungsklassenpfads für das Projekt. Es macht nicht viel Sinn, dass Sie eine bestimmte Klasse hinzufügen müssen.
Jose Muanis
Ich denke nicht, dass diese Aktion notwendigerweise ein benötigtes Verzeichnis hinzufügt, sondern dass etwas neu geladen werden muss. Sie können das neu hinzugefügte Verzeichnis nach einem erfolgreichen Lauf wahrscheinlich sofort entfernen und es sollte wie gewohnt funktionieren. Auch der obige Kommentar ist richtig. Vielleicht möchten Sie auch das empfohlene Lob von Carlos positiv bewerten.
Awied
Ich fand die Antwort auf eine andere SO-Frage bei diesem Problem hilfreicher: stackoverflow.com/a/5718520/901641
ArtOfWarfare
16

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 "Dialogfeld" Ausführen öffnen ". Dort sollte links ein Baum mit JUnit als Option angezeigt werden. Öffnen Sie diesen Knoten und suchen Sie Ihren Test und wählen Sie ihn aus. Im rechten Bereich sehen Sie eine Registerkarte für den Klassenpfad. Stellen Sie sicher, dass Ihre Klasse, die der Test zu instanziieren versucht, gefunden wird.

bearbeiten:

Dies scheint ein Problem mit Maven zu sein, und sein Verhalten nach einer Veröffentlichung hat die Standard-Eclipse-Ausgabeordner geändert. Ich habe Lösungen gesehen, wo beschrieben

  • Platzieren von Maven in den Bootklassenpfad ÜBER dem jre funktioniert, oder
  • Laufen mvn clean testmacht den Trick oder
  • Das Aktualisieren aller Ihrer Eclipse-Projekte, wodurch eine Neuerstellung verursacht wird, behebt das Problem
  • Wenn Sie zu Ihrem Projekt gehen und Maven-> Update Configuration auswählen, wird das Problem behoben

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.

hier und hier sind einige info

akf
quelle
1
Leider löst "Maven => Update Configuration" das Problem überhaupt nicht ... das Gegenteil ist der Fall; Es löscht die Build-Pfad-Konfigurationen ... Oder bedeutet das, dass eine andere Konfiguration schlecht ist?
Swalkner
Genau wie @swalkner darauf hingewiesen hat: Maven => Konfiguration aktualisieren ruiniert die Konfiguration des Erstellungspfads. Aus irgendeinem Grund, der mir entgeht, setzt das Plugin Ausschlussfilter, die ich nach dem Ausführen des Befehls immer manuell entfernen muss
Stefan Haberl
"Gehen Sie zum Menü" Ausführen "und wählen Sie" Dialogfeld "Ausführen öffnen". Huh ?? Wo ist das?
Berit Larsen
4

Möglicherweise fehlt die Klassendatei in Ihrem Build-Ordner. Eine Lösung besteht darin, das Projekt zu bereinigen und neu zu erstellen.

EvilFish
quelle
4

Aktivieren von [x] Verwenden Sie temporäre JAR, um den Klassenpfad (um Einschränkungen der Klassenpfadlänge zu vermeiden) auf der Registerkarte Klassenpfad der Konfiguration Ausführen anzugeben .

Wenn Ihr Projekt sehr groß ist und Sie viele Abhängigkeiten von anderen Geschwisterprojekten und Maven-Abhängigkeiten haben, stoßen Sie möglicherweise auf die Einschränkungen der Klassenpfadlänge, und dies scheint die einzige Lösung zu sein (abgesehen davon, dass das Verzeichnis für Ihr lokales Maven-Repo kürzer wird (unser beginnt bereits) bei c: / m2)

Geben Sie hier die Bildbeschreibung ein

user3018906
quelle
3

Hier gibt es viele verschlungene Vorschläge.

Ich bin bei Maven-Projekten mehrmals auf dieses Problem gestoßen, nachdem ich Ressourcen per Drag & Drop verschoben oder Klassennamen umgestaltet habe.

In diesem Fall kopieren Sie den problematischen Testfall ( .java) einfach über das Terminal / den Dateibrowser an einen anderen Speicherort right-click -> Deletein Eclipse und verschieben ihn, wenn Sie die Option haben, auf die Festplatte zu löschen. Verschieben / kopieren Sie die kopierte Datei an den ursprünglichen Dateispeicherort. Wählen Sie dann Ihr Projekt in Eclipse aus und drücken Sie F5, um die Ressourcen zu aktualisieren.

Dies ist schnell und einfach und hat das Problem jedes Mal für mich dauerhaft behoben.

KomodoDave
quelle
Ich bin versucht zu fragen, ob es Ihr Problem dauerhaft oder jedes Mal behoben hat ... aber ich verstehe, was Sie meinen, und erstaunlicherweise hat dies den Trick für mich getan.
Amos M. Carpenter
3

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 Refreshoder drücken Sie F5. Versuchen Sie dann, es auszuführen. Wenn es immer noch nicht funktioniert, vergessen Sie es einfach, da ich genau das gleiche Problem hatte und es nur bedeutet, dass Ihre Version von Eclipse Müll ist.

Starfox275
quelle
2

Dies war meine Lösung für das Problem. Natürlich können viele Dinge dazu führen, dass es auftritt. Für mich war es so, dass Maven2 (nicht das Plugin für Eclipse) das Eclipse-Profil so einrichtete, dass ein anderer Builder (AspektJ) verwendet wurde, aber ich hatte das Plugin nicht in Eclipse./

http://rbtech.blogspot.com/2009/09/eclipse-galileo-javalangclassnotfoundex.html

Prost Ramon Buckland


quelle
2

Sachins Recht: Selbst bei korrektem Klassenpfad zeigt die Registerkarte Probleme, dass eine Abhängigkeit oder die Ressource / das Projekt einen Fehler aufweist, der behoben werden muss, damit Maven beim Erstellen oder Ändern Ihrer Testklasse automatisch Klassen erstellen und erstellen kann .

"Hallo,

Es ist sehr alt Jul (welches Jahr), aber ich hatte das gleiche Problem.

Das eigentliche Problem ergab, dass Eclipse keine Klassendatei für die Java-Datei generieren konnte. Der Klassenpfad war korrekt.

Sehen Sie auf der Registerkarte Problem nach, ob in Ihrem Projekt etwas / eine Datei fehlt. Sie können ein neues Projekt erstellen und Dateien nacheinander hinzufügen und erstellen, bis das Kompilieren und Erstellen von Klassen beendet ist (überprüfen Sie den Arbeitsbereich / proj / bin / package / Ordner auf Klassen).

Es ist seltsam, aber wahr, Ecplise konnte nicht übereinstimmen, da 4 von 20 Java-Dateien ein einzelnes Bild verwendeten, das fehlte. Als Ergebnis wurde keine der Java-Dateien kompiliert.

CLASSPATH ist hier kein Thema. "

kisna
quelle
2

Wir hatten die genaue Ausnahme (mit SpringSource Tools, Tomcat, unter Win7) und die Ursache war, dass wir einen Dateinamen (eine Datei umbenannt) von SubDomain.java in Subdomain.java (D vs d) umgestaltet hatten und er irgendwie kollidierte, obwohl SpringSource es war 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 ihren früheren Inhalt zu kopieren. So einfach ist das.

Romie
quelle
Ich habe immer Junit-Testfälle ausgeführt, bis ich das Programm ausgeführt habe, das den PC auf Kompatibilität überprüft, bevor Windows aktualisiert wurde. Das schien etwas zu brechen, ich kann JUnit-Testfälle nicht erneut ausführen. (und alle vorhandenen Antworten funktionieren nicht)
CoffeDeveloper
2

Ich löse diesen Bulit-Pfad ---> Bibliotheken ---> Bibliothek hinzufügen ---> Junit check junit4

wanfke
quelle
1

Klicken Sie auf project->properties->Java build path->Sourceund überprüfen Sie, ob jeder srcOrdner noch gültig ist oder kürzlich entfernt wurde. Korrigieren Sie fehlende oder falsche Pfade und erstellen Sie den Test neu und führen Sie ihn aus. Es wird das Problem beheben.

iunknown
quelle
1

Ich habe nur Eigenschaften -> Java-Erstellungspfad -> Bestellen und Exportieren -> Alle nicht aktivierten Kontrollkästchen aktiviert -> Junit ganz nach oben verschoben

Siddharth
quelle
1

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 danach

Maven 2 LifeCycle >> Test

user2246725
quelle
1

Ich hatte alle Lösungen auf dieser Seite ausprobiert: Projekt aktualisieren, neu erstellen, alle Projekte bereinigen, Eclipse neu starten, die Projekte erneut importieren (sogar), Maven neu erstellen und aktualisieren. Nichts hat geklappt. Was tat der Arbeit war es, die Klasse zu einem Kopieren neuen Namen , die fein läuft - bizarr , aber wahr.

Nachdem ich mich einige Zeit damit abgefunden hatte, habe ich es einfach behoben durch:

  1. Über das RunMenü
  2. Wählen Run Configurations
  3. Wählen Sie die Laufkonfiguration, die Ihrem Komponententest zugeordnet ist.
  4. Entfernen Sie den Eintrag aus dem Run Configurationdurch Drücken von Löschen oder Klicken auf das rote X.

Irgendetwas muss mit der zwischengespeicherten Laufkonfiguration vermasselt worden sein.

Grau
quelle
1
Nachdem ich zu viel Zeit verschwendet hatte, machte ich die obigen Schritte. Ich habe dann eine heldenhafte Entscheidung getroffen, alle Lauftestkonfigurationen zu löschen, und jetzt kann keiner meiner Tests im Klassenpfad gefunden werden, obwohl die neue Laufkonfiguration das Projekt darin deutlich zeigt (mit Maven-Abhängigkeiten darunter). Ich vergesse immer wieder, wie spröde Sonnenfinsternis ist. Danach konnten keine Tests mit Eclipse ausgeführt werden (bevor ich einen bestimmten Test auswählen konnte - ok). Schließlich habe ich unten den KomodoDave-Vorschlag ausprobiert. Das hat die Dinge behoben ... erstaunlich, welche Schleifen Sie mit dieser Idee (der neuesten einer Serie ...)
durchspringen müssen
1

Das Löschen des Projekts von Eclipse (nicht von der Festplatte), das in gewisser Weise den Arbeitsbereich bereinigt und das Projekt erneut in Eclipse importiert, hat bei mir wieder funktioniert.

Hari Hara Earlapati
quelle
1

Normalerweise tritt dieses Problem auf, wenn das Java-Anwendungstool ausgeführt wird java, das die Klassendatei nicht finden kann.

Meistens sehen wir dieses Problem im Maven-Projekt, weil es ein Problem mit der Eclipse-Maven-Synchronisierung gibt . So lösen Sie dieses Problem: Maven-> Konfiguration aktualisieren

Premraj
quelle
0

Haben Sie versucht, mit der rechten Maustaste auf Ihren Projektstamm zu klicken, "Eigenschaften" auszuwählen und sicherzustellen, dass der KLASSENPFAD korrekt ist? Wenn ich mich richtig erinnere, machst du das so.

Gibt es etwas über die Art und Weise, wie Eclipse Komponententests ausführt, bei denen Sie die Junit-JAR auf besondere Weise zur Laufzeit CLASSPATH hinzufügen müssen?

Ich benutze IntelliJ, daher habe ich diese Probleme nicht.

Ich würde Eclipse selbst überprüfen, aber ich bevorzuge es nicht auf meinem Desktop zu haben.

Duffymo
quelle
okay, ohne zu einer Eclipse vs. IntelliJ-Diskussion zu führen; Ich möchte, dass es in Eclipse ausgeführt wird ... und ich habe den Java-Erstellungspfad überprüft - das Java-JDK ist vorhanden, und ich brauche nichts anderes für mein HelloWorld-Beispiel ... Ich denke, es muss etwas damit zu tun haben 'Quellordner im Erstellungspfad' ... Ich habe sie auf den Ordner gesetzt, in dem mein Paket startet ... Ich gehe davon aus, dass das korrekt ist.
Swalkner
Sie brauchen etwas anderes als das JDK - das ist der Pfad zu HelloWorld.class, oder? "Quellordner auf Erstellungspfad" - klingt besser. Keine Notwendigkeit anzunehmen, ein Experimentator zu sein und es zu versuchen. Eclipse wird Ihnen sagen, ob Sie richtig sind.
Duffymo
0

Hmm, sieht ein bisschen bizarr aus, versuchen Sie es mit der folgenden Anmerkung oben in der Klasse:

@RunWith(SpringJUnit4ClassRunner.class)
public class UserDaoTest {
}

und lassen Sie mich wissen, wie Sie damit umgehen.

Überprüfen Sie, ob Sie Build automatisch aktiviert haben. Wenn Sie sicherstellen möchten, dass Ihre Testklassen korrekt kompiliert werden, löschen Sie den Maven-Zielordner (und alle von Eclipse möglicherweise verwendeten bin-Ordner). Verwenden Sie auch m2eclipse, da ich es als etwas problematisch empfinde?

Jon
quelle
Vielen Dank für Ihre Antwort, aber trotzdem: Es funktioniert auch nicht; Zuerst muss ich spring-test.jar einschließen, dann ist eine andere Abhängigkeit nicht erfüllt. Ich verstehe nicht, warum es nicht mit einer einfachen Helloworld-Klasse im selben Paket funktioniert. und dort brauche ich keinen "Hack" wie den von dir vorgeschlagenen ... irgendetwas muss mit "Klassenpfad" oder ähnlichem falsch sein, aber ich verstehe nicht, wo / was ich überprüfen muss ...
Swalkner
0

Die Lösung für mein Problem war ähnlich: Die Bibliotheken waren ungültig. Wenn Sie in die .classpath-Datei des Projekts schauen, sehen Sie classpathentry-Tags mit dem Schlüssel / Wert kind = "lib". Einige von mir waren falsch.

Ich habe dies erst entdeckt, als 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, aber keine hilfreichen Fehler, warum.

Mike
quelle
0

Bitte zeigen Sie auf JDK unter Windows> Einstellungen> Java> Installierte JRE.

Zeigen Sie nicht auf jre, sondern auf ein geeignetes JDK. Ich habe auf JDK 1.6U29 gezeigt und das Projekt aktualisiert.

Danach ist das Problem behoben und die Einheitentests funktionieren einwandfrei.

Danke,
-Tapas

Tapas Adhikary
quelle
0

Ich bin kürzlich in Eclipse auf denselben Fehler gestoßen, dh die Eclipse-IDE konnte die Unit-Testklasse nicht finden, unabhängig davon, wie ich die Konfigurationen ändere. Aus den vorherigen Beiträgen hier und auf anderen Websites habe ich den Klassenpfad und die Quellinformationen doppelt und dreifach überprüft und den Quellordner und die Bibliotheken sowohl im "Konfiguration ausführen" als auch im "Java-Erstellungspfad" nach oben und unten verschoben "config windows, und ich habe auch das Projekt bereinigt und neu erstellt, aber keiner der Tricks funktioniert für mich. Das spezifische Java-Projekt ist ein altes ANT-kompiliertes Projekt und enthält viele Gläser in der Eclipse-Bibliothek.

Dann habe ich die Unit-Test-Klasse geändert, um eine main () -Methode hinzuzufügen, und mit der rechten Maustaste darauf geklickt, um eine Java-Anwendung anstelle des JUnit-Tests als "Ausführen" auszuführen. Plötzlich scheint Eclipse aufzuwachen und die Klasse korrekt zu identifizieren. Danach habe ich es wieder auf eine Unit-Test-Anwendung umgestellt und es funktioniert immer noch.

Dies scheint ein Fehler in Eclipse zu sein. Ich vermute, dass die große Anzahl von Bibliotheken (> 260) die Fähigkeit der JVM, meine JUnit-Klasse zu finden, verwirrt.

Hongyu Zhang
quelle
0

Ich war auch von diesem Problem betroffen und konnte eine ausreichende Lösung für meinen Fall finden. Wenn Ihr Eclipse-Projekt eine .classpath-Datei in Ihrem Projektstamm enthält (siehe Navigatoransicht anstelle der Paket-Explorer-Ansicht), stellen Sie sicher, dass Ihr Maven-Klassenpfad vor Ihrem JRE-Container-Klassenpfad 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 keine .classpath-Datei hat, 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 Ihre Reihenfolge nur im Java Build Path ändern, werden Sie feststellen, dass die Reihenfolge nicht beeinflusst wird und das Problem weiterhin auftritt.

Und ein Projekt-> Reinigen schadet nie, nachdem Sie die Änderung vorgenommen haben.

cmh
quelle
0

Stellen Sie sicher, dass Ihre Teststartkonfiguration NICHT die folgenden Zeilen enthält, ODER versuchen Sie, das automatisierte Maven-Abhängigkeitsmanagement 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"/>
thSoft
quelle
0

Ich habe versucht , alles , was ich in dieser langen Beitrag gelesen und unglaublich, was für mich gearbeitet wurde, anstatt sich auf die Testklasse klicken und auswählen Run as JUnit test, klicken Sie auf das Testverfahren und läuft wie JUnit test. Ich habe keine Idee warum?

Schlangenhund
quelle
0

Der JUnit-Test innerhalb von Eclipse gab mir auch NoClassDefFoundError. Das Ausführen von 'mvn clean test' über die Befehlszeile führte bei mehreren Jars zu folgendem Fehler: Ungültiger LOC-Header (falsche Signatur) Das Löschen dieser Jars aus dem lokalen m2-Repository und das erneute Ausführen von 'mvn clean test' lösten mein Problem.

RutgerDOW
quelle
0

Ich hatte das gleiche Problem. Alles was ich getan habe war,

ich). Generierte Eclipse-Artefakte

mvn clean eclipse:eclipse

ii). Aktualisieren Sie das Projekt und führen Sie Ihren Junit-Test erneut aus. Sollte gut funktionieren.

Vikram
quelle
0

Überprüfen Sie außerdem das Dialogfeld "Web Deployment Assembly" der Eclipse.

Dies finden Sie unter: Projekteigenschaften-> Bereitstellungsassembly.

Kürzlich 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 zur Deployment Assembly hinzu. UGGGG !!!

Aus diesem Grund hat mein Projekt gut funktioniert, als ich nur Maven für Tomcat erstellt und bereitgestellt habe, keine ClassNotFoundExceptions ... Als ich jedoch die Bereitstellung über Eclipse durchgeführt habe, Whammo !! Ich erhalte ClassNotFoundExceptions, weil der TestCode bereitgestellt wird.

Eric

Eric Manley
quelle
0

Das bedeutet, dass Ihre pom.xml ungelöste Probleme hat. Öffnen Sie die Problemansicht entsprechend lösen. Dann können Sie die Testfälle erfolgreich ausführen, ohne auf die classnotfoundexception zu stoßen.

Raju Rao
quelle
0

Das Ändern der Reihenfolge der Klassenpfadartefakte im Java-Erstellungspfad hat das Problem für mich behoben.

  1. Klicken Sie mit der rechten Maustaste auf das Projekt und gehen Sie zum Pfad für die Projekterstellung.
  2. Gehen Sie zur Registerkarte Bestellen und Exportieren und verschieben Sie die JRE-Systembibliothek nach den Quellen.

Dies sollte das Problem beheben.

Sai Killi
quelle