Podczas próby uruchomienia mojego JUnit-Test z Eclipse otrzymuję „ClassNotFoundException”. Podczas uruchamiania "mvn test" z konsoli - wszystko działa dobrze. Ponadto w Eclipse nie są zgłaszane żadne problemy.
Struktura mojego projektu jest następująca:
- projekt macierzysty (pom-opakowanie)
- Projekt sieciowy (opakowanie wojenne - mój test JUnit jest tutaj)
- Projekt Flex
- Projekt konfiguracji
edit: Jak można nie znaleźć klasy? Jest to prosta aplikacja HelloWorld bez specjalnych bibliotek.
Oto konfiguracja uruchamiania mojego JUnita: tekst alternatywny http://www.walkner.biz/_temp/runconfig.png
Testclass (ale jak powiedziałem; nie działa też z prostym 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("", ""));
}
}
Odpowiedzi:
Z taką sytuacją spotkałem się kilka razy i po wielu próbach znalazłem rozwiązanie.
Sprawdź ścieżkę kompilacji projektu i włącz określone foldery wyjściowe dla każdego folderu. Przejdź jeden po drugim przez każdy folder źródłowy projektu i ustaw folder wyjściowy, którego będzie używał maven.
Na przykład projekt sieci Web
src/main/java
powinien miećtarget/classes
pod projektem sieciowym, klasy testowe powinnytarget/test-classes
również znajdować się w projekcie internetowym i tak dalej.Użycie tej konfiguracji umożliwi wykonywanie testów jednostkowych w środowisku Eclipse.
Jeszcze jedna rada, jeśli testy twojego projektu internetowego wymagają plików konfiguracyjnych znajdujących się w zasobach, pamiętaj, aby uwzględnić ten folder jako folder źródłowy i odpowiednio skonfigurować ścieżkę kompilacji.
Mam nadzieję, że to pomoże.
źródło
@Ignore
wszędzie i GUI skrótów!Podejście Carlosa pomogło! Eclipse - java.lang.ClassNotFoundException
Spróbuj sprawdzić ścieżkę klasy konfiguracji uruchamiania junit:
pracuje dla mnie.
źródło
Twoja ścieżka klas kompilacji jest poprawna, dlatego możesz ją skompilować. należy sprawdzić ścieżkę klas dla swojego JUnit. przejdź do menu Uruchom i wybierz „Otwórz okno dialogowe uruchamiania”. tam powinieneś zobaczyć drzewo po lewej stronie z JUnit jako opcją. otwórz ten węzeł i znajdź i wybierz swój test. w prawym okienku zobaczysz zakładkę ścieżki klas. sprawdź, czy Twoja klasa, której instancję test próbuje utworzyć, zostanie znaleziona.
edytować:
wydaje się, że jest to problem z maven i jego zachowaniem po zmianie wersji domyślnych folderów wyjściowych Eclipse. widziałem rozwiązania opisane gdzie
mvn clean test
załatwia sprawę lubw przypadku pierwszych trzech pojawiły się powtarzające się doniesienia o problemie. ostatnia wygląda najlepiej, ale jeśli nie działa, wypróbuj inne.
tutaj i tutaj jest trochę informacji
źródło
Problem może obejmować brak pliku klasy w folderze kompilacji. Jednym z rozwiązań jest wyczyszczenie projektu i odbudowanie go.
źródło
Włączenie opcji [x] Użyj tymczasowego pliku JAR, aby określić ścieżkę klasy (aby uniknąć ograniczeń długości ścieżki klas) na karcie Ścieżka klasy w konfiguracji Uruchom, załatwiło sprawę .
Jeśli Twój projekt jest ogromny i masz wiele zależności od innych projektów siostrzanych i zależności Mavena, możesz napotkać ograniczenia długości ścieżki klas i wydaje się to być jedyne rozwiązanie (oprócz skrócenia katalogu lokalnego repozytorium Mavena (nasze już się zaczyna przy c: / m2)
źródło
Jest tu wiele zawiłych sugestii.
Wielokrotnie napotkałem ten problem w projektach Maven po przeniesieniu zasobów za pomocą przeciągania i upuszczania lub przeprowadzaniu refaktoryzacji nazw klas.
Jeśli tak się stanie, po prostu skopiuj (nie przenoś) problemu Test Case (
.java
) przez terminal / przeglądarkę plików do innej lokalizacji,right-click -> Delete
w Eclipse i wybierz opcję usunięcia na dysku, gdy zostanie wybrana opcja, przenieś / skopiuj skopiowany plik do oryginalnej lokalizacji pliku, następnie wybierz swój projekt w Eclipse i naciśnij F5, aby odświeżyć zasoby.Jest to szybkie i łatwe do zrobienia i za każdym razem rozwiązuje problem na stałe.
źródło
Miałem dokładnie ten sam problem, ale rozgryzłem go! Przejdź do pliku projektu i kliknij go prawym przyciskiem myszy, a następnie kliknij
Refresh
lub naciśnij klawisz F5. Następnie spróbuj go uruchomić. Jeśli nadal nie działa, po prostu o tym zapomnij, ponieważ miałem DOKŁADNY ten sam problem, a to oznacza po prostu, że twoja wersja Eclipse to śmieć.źródło
To było moje rozwiązanie problemu. Oczywiście może to spowodować wiele rzeczy. Dla mnie chodziło o to, że Maven2 (nie wtyczka do Eclipse) ustawiał profil zaćmienia, aby użyć innego konstruktora (aspektJ), ale nie miałem wtyczki w eclipse./
http://rbtech.blogspot.com/2009/09/eclipse-galileo-javalangclassnotfoundex.html
Pozdrawiam Ramon Buckland
źródło
Sachin ma rację: Nawet przy poprawnej ścieżce klasy, karta problemów pokaże, że jakaś zależność lub zasób / projekt zawiera błąd, który należy naprawić, aby maven mógł automatycznie budować i tworzyć klasy, gdy tworzysz lub wprowadzasz zmiany w klasie testowej .
"Cześć,
To bardzo stary lipiec (który rok), ale miałem ten sam problem.
Rzeczywisty problem ujawnił, że eclipse nie był w stanie wygenerować pliku klasy dla pliku java, ścieżka klas była prawidłowa.
Zobacz kartę problemów i sprawdź, czy w Twoim projekcie brakuje czegoś / pliku. możesz utworzyć nowy projekt i dodawać pliki jeden po drugim i budować je, aż przestanie kompilować i tworzyć klasy (sprawdź obszar roboczy / proj / bin / package / folder dla klas)
jego dziwne, ale prawdziwe, ecplise nie powiodło się podczas kompilacji, ponieważ 4 z 20 plików java używało jednego obrazu, którego brakowało. w wyniku czego żaden plik java nie został skompilowany.
CLASSPATH nie jest tutaj problemem ”.
źródło
Mieliśmy dokładny wyjątek (używając SpringSource Tools, tomcat, na Win7), a przyczyną było to, że zmieniliśmy nazwę pliku (zmieniliśmy nazwę pliku) z SubDomain.java na Subdomain.java (D vs d) i w jakiś sposób zderzyło się, chociaż SpringSource było pokazując nową nazwę Subdomain.java. Rozwiązaniem było usunięcie pliku (przez SpringSource) i utworzenie go ponownie pod nazwą Subdomain.java i skopiowanie i wklejenie jego poprzedniej zawartości. Proste.
źródło
Rozwiązuję tę ścieżkę Bulit ---> biblioteki ---> dodaj bibliotekę ---> Junit sprawdź junit4
źródło
Kliknij
project->properties->Java build path->Source
i sprawdź, czy każdysrc
folder jest nadal ważny, istnieje lub został niedawno usunięty. Popraw brakującą ścieżkę lub nieprawidłową ścieżkę, a następnie odbuduj i uruchom test. To rozwiąże problem.źródło
Wszystko, co zrobiłem, to Właściwości -> Ścieżka budowania Java -> Zamów i eksportuj -> Włączone wszystkie niezaznaczone pola -> przeniosłem Junita na samą górę
źródło
Wypróbowany
pracował po
Cykl życia Maven 2 >> test
źródło
Wypróbowałem wszystkie rozwiązania na tej stronie: odśwież projekt, przebuduj, wyczyść wszystkie projekty, zrestartuj Eclipse, ponownie zaimportuj (nawet) projekty, przebuduj maven i odśwież. Nic nie działało. Udało się skopiować klasę do nowej nazwy, która działa dobrze - dziwaczna, ale prawdziwa.
Po pewnym czasie znosząc to, po prostu naprawiłem to przez:
Run
menuRun Configurations
Run Configuration
przez naciśnięcie klawisza Delete lub kliknięcie czerwonego X.Coś musiało zostać schrzanione z konfiguracją uruchamiania w pamięci podręcznej.
źródło
Usunięcie projektu z zaćmienia (nie z dysku twardego), które w pewnym sensie oczyszcza obszar roboczy i ponownie importuje projekt do zaćmienia, działało dla mnie.
źródło
Zwykle ten problem występuje, gdy
java
narzędzie aplikacji Java nie może znaleźć pliku klasy.Głównie w projekcie maven widzimy ten problem, ponieważ problem z synchronizacją Eclipse-Maven . Aby rozwiązać ten problem: Maven-> Aktualizuj konfigurację
źródło
Czy próbowałeś kliknąć prawym przyciskiem myszy katalog główny swojego projektu, wybrać „właściwości” i upewnić się, że CLASSPATH jest poprawny? Jeśli dobrze pamiętam, tak to się robi.
Coś na temat sposobu, w jaki Eclipse uruchamia testy jednostkowe, które wymagają dodania junit JAR do środowiska wykonawczego CLASSPATH w specjalny sposób?
Używam IntelliJ, więc nie mam tych problemów.
Sam bym sprawdził Eclipse, ale wolę nie mieć go na pulpicie.
źródło
Hmm, wygląda trochę dziwnie, spróbuj uruchomić go z następującą adnotacją na szczycie klasy:
i daj mi znać, jak sobie z tym radzisz.
Sprawdź, czy masz również włączoną automatycznie kompilację. Jeśli chcesz się upewnić, że klasy testowe są poprawnie kompilowane, wyczyść folder docelowy Maven (i każdy folder bin, którego może używać Eclipse). Czy używasz również m2eclipse, ponieważ wydaje mi się to trochę problematyczne.
źródło
Rozwiązanie mojego problemu, które było podobne: biblioteki były nieprawidłowe. Jeśli zajrzysz do pliku .classpath projektu, zobaczysz tagi classpathentry z kluczem / wartością kind = "lib". Niektóre z moich były błędne.
Nie odkryłem tego, dopóki nie wyłączyłem ustawień walidacji. Oznacza to, że w plikach JSP było tak wiele błędów, itp., Że błędy ścieżki klas nie były widoczne (lub być może nawet się pojawiały). W rezultacie nic nie było kompilowane do docelowych folderów wyjściowych, ale żadnych pomocnych błędów wyjaśniających, dlaczego.
źródło
Wskaż poprawne JDK w Windows> Preferencje> Java> Zainstalowane środowisko JRE.
Nie wskazuj na jre, wskaż właściwy JDK. Wskazałem na JDK 1.6U29 i odświeżyłem projekt.
Odtąd problem zniknął, a jUnit Tests działa poprawnie.
Dzięki,
-Tapas
źródło
Ostatnio napotkałem ten sam błąd w Eclipse, tj. Eclipse IDE nie może znaleźć klasy testowej Unit, niezależnie od tego, jak zmieniam konfiguracje. Ucząc się na podstawie poprzednich postów tutaj i na innych stronach internetowych, dwukrotnie sprawdziłem i potrójnie sprawdziłem ścieżkę klas i informacje o źródle oraz poruszałem się w górę iw dół folderu źródłowego i bibliotek, zarówno w „Uruchom konfigurację”, jak i „Ścieżce budowania Java „config windows”, wyczyściłem też projekt i przebudowałem go, ale żadna z tych sztuczek nie działa. Konkretny projekt Java jest starym projektem skompilowanym przez ANT i zawiera wiele plików JAR w bibliotece Eclipse.
Następnie zmieniłem klasę testu jednostkowego, aby dodać metodę main () i kliknąłem ją prawym przyciskiem myszy na „Uruchom jako” aplikację Java zamiast testu JUnit i nagle Eclipse wydaje się budzić i poprawnie identyfikować klasę. Następnie przełączyłem go z powrotem na aplikację do testów jednostkowych i nadal działa.
Wydaje się, że jest to błąd w Eclipse. Domyślam się, że duża liczba bibliotek (> 260) może zmylić zdolność maszyny JVM do zlokalizowania mojej klasy JUnit.
źródło
Trafił mnie również ten problem i udało mi się znaleźć wystarczające rozwiązanie dla mojego przypadku. Jeśli Twój projekt Eclipse ma plik .classpath w katalogu głównym projektu (zobacz go w widoku Nawigatora zamiast w widoku Eksploratora pakietów), upewnij się, że uwierzytelnianie klas Maven pojawia się przed uwierzytelnianiem klas kontenera JRE.
Jeśli Twój projekt nie ma pliku .classpath, możesz edytować ścieżkę budowania Java projektu, aby przełączyć kolejność i eksport. Jeśli Twój projekt zawiera plik .classpath i zmienisz kolejność tylko w ścieżce budowania Java, zobaczysz, że nie ma to wpływu na kolejność i problem będzie nadal występował.
A projekt-> sprzątanie nigdy nie zaszkodzi po wprowadzeniu zmiany.
źródło
Upewnij się, że konfiguracja uruchamiania testu NIE zawiera następujących wierszy LUB spróbuj włączyć automatyczne zarządzanie zależnościami Maven.
źródło
Wypróbowałem wszystko, co przeczytałem w tym długim poście i, co niewiarygodne, zadziałało dla mnie, zamiast klikania klasy testowej i wybierania
Run as JUnit test
, klikania metody testowej i uruchamiania jakoJUnit test
. Nie mam pojęcia dlaczegoźródło
Test JUnit z wnętrza zaćmienia dał mi również NoClassDefFoundError. Uruchomienie „mvn clean test” z wiersza poleceń dało mi następujący błąd na kilku słoikach: nieprawidłowy nagłówek LOC (zły podpis) Usunięcie tych plików JAR z lokalnego repozytorium m2 i uruchomienie „mvn clean test” ponownie rozwiązało mój problem.
źródło
Miałem ten sam problem. Wszystko co zrobiłem to
ja). Wygenerowano artefakty Eclipse
mvn clean eclipse:eclipse
ii). Odśwież projekt i ponownie uruchom test junit. Powinno działać dobrze.
źródło
Ponadto PODWÓJNIE SPRAWDZIĆ okno dialogowe Eclipse „Web Deployment Assembly”.
Można to znaleźć: Właściwości projektu-> Zespół wdrożeniowy.
Niedawno miałem wtyczkę eclipse modyfikującą jeden z moich projektów internetowych, która dodała ~ tajemniczo ~ dodała katalogi testowe mavena / src / test / java, / src / test / resources do zestawu wdrożeniowego. UGGGG !!!
Dlatego mój projekt działał dobrze, gdy zbudowałem i wdrożyłem tylko zwykłego mavena do tomcat, bez wyjątków ClassNotFound ... Jednak kiedy wykonałem wdrożenie przez Eclipse, Whammo !! Zaczynam otrzymywać ClassNotFoundExceptions, ponieważ wdrażany jest kod TestCode.
Eric
źródło
Oznacza to, że Twój pom.xml zawiera nierozwiązane problemy. Otwórz widok problemów rozwiąż odpowiednio. Wtedy będzie można pomyślnie uruchomić przypadki testowe bez napotkania wyjątku nie znalezionego klasy.
źródło
Zmiana kolejności artefaktów ścieżki klas w ścieżce budowania języka Java rozwiązała problem.
To powinno to naprawić.
źródło