2011-08-17 85 views
11

我正在使用ant和TestNG 6.1.1,並且我的測試工作正常昨天很好。今天,當我嘗試運行測試時,我得到一個涉及com/beust/jcommander/ParamException的NoClassDefFoundError。下面是輸出:突然無法從ant運行TestNG測試([testng]引發: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. 

這裏是我使用的.xml文件:

<!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> 

我還指定了完整的路徑,沒有運氣的類。我檢查過類路徑,一切似乎都很好,有沒有人有任何想法呢?

+0

好了,所以我增加了jcommander-1.17.jar到類路徑中,我仍然得到同樣的錯誤。 – anotherdjohnson

+0

現在我已經發布了這個讓全世界都可以看到的東西,我發現jcommander實際上並不在類路徑中。我確信我在那裏看到了它,但肯定它丟失了。 現在它無法找到測試,不知道爲什麼,因爲我已經三重檢查了類路徑,而且它絕對存在。 – anotherdjohnson

回答

8

如果你使用ant,JCommander應該在testng.jar裏面,所以我想你的testng.jar文件可能已經損壞了。

+0

塞德里克,你是對的,我從網站上下載了testng.jar的一個副本,它工作得很好,沒有jcommander jar。我們使用ivy顯然它在緩存中有一個損壞的文件。我將不得不考慮如何照顧。 感謝您再次幫助我。 – anotherdjohnson

+0

很高興聽到它。僅供參考,'rm -rf〜/ .ivy2/org.testng'應該處理這個問題。 –

+1

塞德里克,事實證明,我使用的文件是在Maven 2存儲庫中的相同文件,因此從我的常青藤緩存中刪除它並沒有幫助。緩存中的文件存在問題,還是有其他問題? – anotherdjohnson

0

可能是testng.jar不在classpath中。

+0

正如我在我原來的帖子中提到的,我檢查了課程路徑。請參閱上面的Cedric的迴應。 – anotherdjohnson

4

如果您使用的是Maven嘗試添加這對你的pom.xml

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

jcommander.jar(如jcommander-1.29.jar)應該出現在其上的build.xml文件中提到的文件集目錄

你可以從這裏下載:http://mvnrepository.com/artifact/com.beust/jcommander/1.27

OR,

JCommander應該是內部testng.jar使用Ant中。您的testng.jar文件可能已損壞,請將舊的testng.jar替換爲新的。

0

我有一個非Maven項目的同樣的問題。我從Maven Central中檢索了testng jar,但它並不包含TestNG的所有依賴項。直接從TestNG站點下載jar解決了這個問題,因爲它包含了依賴關係。

我應該更加關注方向上TestNG's download page ...

TestNG中的最新版本可從Maven的中央這裏下載螞蟻用戶

0

我的螞蟻開始工作時,我從 Maven倉庫下載jcommandar罐子,在我的jar文件

加入它,但這個問題 從這裏開始使用TestNG未來6.8.5版本

0

問題是某些版本的testNG jar的內部沒有jcommander jar代碼。因此,您必須將類路徑分別添加到Jcommander jar中。

添加Jcommander罐子到類路徑,當你運行它會解決這個問題,希望