2011-08-17 13 views
11

Używam ant i TestNG 6.1.1, a moje testy działały właśnie dobrze wczoraj. Dzisiaj, kiedy próbuję uruchomić testy, otrzymuję NoClassDefFoundError z udziałem com/beust/jcommander/ParamException. Oto wynik:Nagle nie można uruchomić testów TestNG z ant ([testng] Powodowanego przez: java.lang.ClassNotFoundException: com.beust.jcommander.ParameterException)

[copy] Copying 1 file to /Users/djohnson/src/webapp/components/build/tmp 
[testng] Exception in thread "main" java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException 
[testng] Caused by: java.lang.ClassNotFoundException: com.beust.jcommander.ParameterException 
[testng] at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
[testng] at java.security.AccessController.doPrivileged(Native Method) 
[testng] at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
[testng] at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
[testng] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
[testng] at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
[testng] The tests failed. 

Oto plik .xml Używam:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Single Method Suite"> 
    <test name="Single Method Test"> 
    <classes> 
     <class name="DhcpTest"> 
     <methods> 
      <exclude name=".*" /> 
      <include name="setGetEnabledTest" /> 
     </methods> 
     </class> 
    </classes> 
    </test> 
</suite> 

Ja również określić pełną ścieżkę do klasy bez powodzenia. Sprawdziłem ścieżkę klas i wszystko wygląda dobrze, czy ktoś ma jakieś pomysły na ten temat?

+0

Ok, więc dodałem jcommander-1.17.jar do ścieżki klasy, a ja wciąż dostać ten sam błąd. – anotherdjohnson

+0

Teraz, gdy opublikowałem to dla całego świata, odkryłem, że jcommander nie był w rzeczywistości w ścieżce klas. Byłem pewien, że go tam widziałem, ale na pewno go brakowało. Teraz nie można znaleźć testu, nie wiem dlaczego, ponieważ potrójnie sprawdziłem ścieżkę klasy i na pewno tam jest. – anotherdjohnson

Odpowiedz

8

Jeśli używasz mrówki, JCommander powinien znajdować się w pliku testng.jar, więc myślę, że plik testng.jar może być uszkodzony.

+0

Cedric, masz rację, pobrałem kopię strony testng.jar ze strony internetowej i działało dobrze bez słoika jcommander. Używamy bluszcz, więc najwyraźniej ma uszkodzony plik w pamięci podręcznej. Muszę zajrzeć do tego, żeby się tym zająć. Dzięki za pomoc, jeszcze raz. – anotherdjohnson

+0

Miło to słyszeć. FYI, 'rm -rf ~/.ivy2/org.testng' powinien zająć się problemem. –

+1

Cedric, okazuje się, że plik, którego używam, jest tym samym plikiem, który znajduje się w repozytorium Maven 2, więc usunięcie go z mojej pamięci podręcznej bluszcza nie pomaga. Czy jest jakiś problem z plikiem w pamięci podręcznej, czy coś tu się dzieje? – anotherdjohnson

0

Może być testng.jar nie znajduje się w ścieżce klas.

+0

Jak wspomniałem w moim oryginalnym wpisie, sprawdziłem ścieżkę klasy. Zobacz odpowiedź Cedrica powyżej. – anotherdjohnson

4

Jeśli używasz Maven spróbuj dodać to do Twojego pom.xml

<dependency> 
    <groupId>com.beust</groupId> 
    <artifactId>jcommander</artifactId> 
    <version>1.30</version> 
</dependency> 
3

jcommander.jar (np jcommander-1.29.jar) powinny być obecne w katalogu zestawu plików, który jest wymieniony w build.xml

można go pobrać z: http://mvnrepository.com/artifact/com.beust/jcommander/1.27

OR,

JCommander powinny być wewnątrz testng.jar podczas korzystania mrówkę. Twój plik testng.jar może być uszkodzony, więc zamień stary plik testng.jar na nowy.

0

Miałem ten sam problem z projektem non-Maven. Pobrałem słoik testng z Maven Central, ale nie zawierało ono wszystkich zależności TestNG. Pobranie słoika bezpośrednio ze strony TestNG rozwiązało problem, ponieważ zawiera on zależności.

powinienem zwrócić większą uwagę na kierunkach, na TestNG's download page ...

Najnowsza wersja TestNG można pobrać z Maven Central lub tutaj dla mrówek użytkowników.

0

Moja mrówka rozpocząć pracę przy Pobrałem jcommandar słoik z Maven repozytorium i dodać go w moim pliku jar

Ale Ten problem Rozpoczyna pochodzących z TestNG 6.8.5 Wersja

0

tu problem jest to, że niektóre wersje słoika testNG nie zawierają kodu jardów jcommander wewnątrz nich. W rezultacie musisz osobno dodać ścieżkę klas do słoju Jcommander.

Dodawanie słoik Jcommander na ścieżce klas po uruchomieniu będzie rozwiązać ten problem, mam nadzieję

Powiązane problemy