Otrzymuję ten błąd podczas uruchamiania testu JUnit w Eclipse:
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)
Próbowałem dodać JUnit
bibliotekę w ścieżce klas, chociaż używam mavena, a biblioteka JUnit jest zależna od POM.
Próbowałem już wyczyścić projekt i utworzyłem nowy przypadek testowy JUnit za pomocą wtyczki JUnit dla Eclipse, nadal otrzymując ten sam błąd.
mvn clean test
, skompiluje wszystkie klasy testoweOdpowiedzi:
Wydaje się, że dzieje się tak, ponieważ podczas używania kompiluje się tylko kod źródłowy
mvn clean compile
(używam maven 3.1.0, więc nie jestem pewien, czy zawsze zachowywał się w ten sposób).Jeśli uruchomisz
mvn test
, kod testowy również się skompiluje, ale następnie uruchomi testy (co może nie być natychmiast pożądane, jeśli próbujesz uruchomić je przez Eclipse). Sposób na obejście tego polega na dodaniutest-compile
do sekwencji poleceń Mavena, ilekroć robiszmvn clean
. Na przykład biegłbyśmvn clean compile test-compile
.źródło
Miałem podobny problem z moimi testami i znalazłem gdzieś w sieci, że musisz przejść do Build Path we właściwościach swojego projektu i przenieść Maven Dependencies powyżej JRE System Library . Wydaje się, że to zadziałało.
źródło
I w obliczu tego samego problemu i udało mi się go naprawić za pomocą przycisku @ slomek za odpowiedź , ale problem pojawił się ponownie po tym.
W końcu naprawiłem to, dodając folder wyjściowy mojego projektu do konfiguracji uruchamiania testu JUnit. Kroki to:
Project properties -> Java Build Path -> Default output folder
<project-folder>/bin
Run -> Run Configurations...
Classpath
kartęUser Entries
- nawet jeśli projekt jest już tam zawartyAdvanced -> Add folder
aby dodać folder wyjściowyTen problem może być spowodowany dziwną konfiguracją projektu w Eclipse - np. Folder źródłowy z zagnieżdżonymi projektami maven zaimportowanymi jako pojedynczy projekt / folder (przynajmniej tak został skonfigurowany mój projekt).
źródło
Jeśli ten problem występuje tylko w Eclipse, może pomóc wykonanie polecenia Projekt -> Wyczyść ... na wybranym projekcie.
źródło
Po wypróbowaniu wszystkiego tutaj bez poprawy rozwiązałem problem, po prostu ponownie uruchamiając Eclipse
źródło
Naprawiłem mój problem, uruchamiając aktualizację maven. Kliknij prawym przyciskiem myszy projekt swój projekt> Maven> Aktualizuj projekt
źródło
W moim przypadku miałem złą strukturę katalogów maven.
Który powinien wyglądać następująco:
/ src / test / java / com.myproject.server.MyTest
Po tym, jak to naprawiłem - wszystko działało jak urok.
źródło
W moim przypadku dopiero kolejne kroki pomogły mi rozwiązać ten problem:
źródło
Wcześniej w tym przypadku zawsze robiłem mvn
eclipse:eclipse
i restartowałem Eclipse i działało. Po migracji do GIT przestał działać dla mnie, co jest nieco dziwne.Podstawowy problem polega na tym, że Mr Eclipse nie znajduje skompilowanej klasy. Następnie ustawiłem folder wyjściowy jako Project / target / test-classes, który jest domyślnie generowany
mvn clean install
bez pomijania testu i wykonałem następujące obejście:Opcja 1: Ustaw ścieżkę klas dla każdego przypadku testowego
Eclipse -> Uruchom -> Run Configurations -> w JUnit-> wybierz mytest -> w zakładce classpath -> Select User Entries -> Advanced -> Add Folder -> Select -> Apply -> Run
Opcja 2: Utwórz zmienną classpath i dołącz ją do classpath dla wszystkich przypadków testowych
Eclipse -> Windows -> Zmienne ścieżki klas -> Nowy -> [Nazwa: Junit_test_cases_cp | path:] -> ok Następnie przejdź do Eclipse-> Run -> Run Configurations -> JUnit-> wybierz mytest -> w zakładce classpath -> Select User Entries-> Advanced-> Add classpath variable-> Select Junit_test_cases_cp-> ok- > Zastosuj-> Uruchom
To jedyna rzecz, która obecnie działa dla mnie po wypróbowaniu wszystkich sugestii online.
źródło
Miałem ten sam problem z projektem Gradle z testowym zestawem SourceSet z dwoma katalogami zasobów.
Ten fragment pochodzi z pliku main-module.gradle i dodaje katalog zasobów do testowego zestawu SourceSet:
Robiąc to, miałem dwa katalogi zasobów związane z testowym zestawem źródłowym głównego modułu projektu:
../other-module/src/test/resources src / test / resources (względem folderu głównego modułu, automatycznie dodawane przez wtyczkę java)
Dowiaduję się, że gdybym miał dwa pliki o tej samej nazwie w obu katalogach źródłowych, coś na etapie zasobów procesu poszło nie tak. W rezultacie kompilacja nie została rozpoczęta iz tego powodu żadne pliki .class nie zostały skopiowane do katalogu bin, w którym JUnit szukał klas. Wyjątek ClassNotFoundException zniknął po prostu zmieniając nazwę jednego z dwóch plików.
źródło
NoClassDefFoundError naprawdę oznacza, że nie może zainicjować klasy. Nie ma to nic wspólnego ze znalezieniem klasy. Wystąpił ten błąd podczas wywoływania funkcji trim () w łańcuchu o wartości null.
JUnit nie pokaże wyjątku NullPointerException. Ciąg nie jest null podczas normalnego działania, ponieważ pobieram ciąg z pliku właściwości, który nie jest dostępny do testów.
Radzę usuwać fragmenty z zajęć, dopóki testy nie zaczną przechodzić. Następnie możesz określić, która linia powoduje błąd.
źródło
Miałem podobny problem z moim Eclipse Helios, który debuguje Junity. Mój problem był trochę inny, ponieważ udało mi się pomyślnie uruchomić Junits, ale kiedy otrzymałem ClassNotFoundException podczas debugowania tych samych JUNITów.
Próbowałem różnych rozwiązań dostępnych na Stackoverflow.com i forach w innych miejscach, ale wydaje się, że nic nie działa. Po prawie dwóch dniach walenia głową w ten problem, w końcu znalazłem rozwiązanie.
Jeśli żadne z rozwiązań nie działa, po prostu usuń folder .metadata utworzony w obszarze roboczym. Spowodowałoby to dodatkowe obciążenie związane z importowaniem projektów i wszelkiego rodzaju konfiguracji, które wykonałeś, ale z pewnością rozwiążą ten problem.
Mam nadzieję, że to pomoże.
źródło
Te kroki zadziałały dla mnie.
źródło
1- mvn eclipse: eclipse
2 - projekt wyczyść wszystkie projekty
3- Uruchom ponownie
źródło
Warto wspomnieć jako kolejną odpowiedź, że jeśli używasz eGit, a twoja ścieżka klas jest aktualizowana z powodu, powiedzmy, narzędzia do pokrywania testów, takiego jak Clover, to czasami pojawia się czkawka czyszczenia, która nie usuwa całkowicie zawartości
/path/to/git/repository/<project name>/bin/
Zasadniczo skorzystałem z widoku dziennika błędów Eclipse, zidentyfikowałem, co powoduje problemy podczas czyszczenia, przeszedłem do katalogu źródłowego i ręcznie usunąłem
<project name>/bin
katalog. Po zakończeniu wróciłem do Eclipse i odświeżyłem (F5
) mój projekt, a błąd zniknął.źródło
Sprawdź, czy Twój projekt jest otwarty jako projekt Maven, a nie zwykły projekt Java. Właściwie to oczywiste, ale to jest dokładnie ten sam powód, dla którego możesz to przegapić.
źródło
Może to być również spowodowane komunikatem „[BŁĄD] W tym środowisku nie ma kompilatora. Być może korzystasz z JRE, a nie JDK?”
źródło
Miałem ten sam problem. Rozwiązałem to, usuwając zewnętrzną zależność jar JUnit, którą dodałem, pobierając z Internetu zewnętrznie. Ale potem poszedłem do projektu-> właściwości-> ścieżka kompilacji-> dodaj bibliotekę-> junit-> wybrałem wersję (ex junit4) -> zastosuj.
Automatycznie dodała zależność. rozwiązało mój problem.
źródło
Wprowadzenie fałszywej zmiany i zapisanie klasy testowej może rozwiązać problem. Automatycznie zbuduje .class
źródło
Wydaje się, że problem z kompilacją. Uruchom projekt jako test Maven, a następnie Uruchom jako test JUnit.
źródło
W przypadku projektu, który nie używa maven: to zadziałało dla mnie https://ihategeek.wordpress.com/2012/04/18/eclipse-junit-test-class-not-found/
Dodanie jre i src projektu na dole w kolejności i eksportowanie w ścieżce kompilacji
źródło
Pls sprawdź, czy dodałeś junit4 jako zależność.
na przykład
źródło
Być może zapomniałeś umieścić klasę Main i Test Case w / src / test / java. Sprawdź to raz.
źródło