2011-08-17 34 views
11

私はantとTestNG 6.1.1を使用しています。昨日は大丈夫。今日テストを実行しようとすると、com/beust/jcommander/ParamExceptionを含むNoClassDefFoundErrorが発生します。ここでは、出力は次のようになります。私も運を持つクラスの完全なパスを指定した突然、Ant([testng]からTestNGテストを実行できません。原因:java.lang.ClassNotFoundException:com.beust.jcommander.ParameterException)

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

ここ
[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ファイルです。私はクラスパスをチェックして、すべてがうまく見える、誰にもこれに関するアイデアはありますか?

+0

さて、あなたのクラスパスにJcommander jarを追加するので、私はクラスパスにjcommander-1.17.jarを追加した、と私はまだ同じエラーを取得します。 – anotherdjohnson

+0

これは世界中の人に見てもらえるようになったので、jcommanderは実際にクラスパスには入っていないことがわかりました。私はそこにそれを見たと確信していたが、確かにそれは行方不明だった。 私はクラスパスを3回チェックしたので、なぜそれが確かではないのか、テストを見つけることができません。 – anotherdjohnson

答えて

8

antを使用している場合、JCommanderはtestng.jar内にある必要があります。そのため、testng.jarファイルが壊れている可能性があります。

+0

セドリック、あなたは正しいです、私はウェブサイトからtestng.jarのコピーをダウンロードし、jcommander jarを持っていてもうまくいきました。私たちはアイビーを使用しているので、明らかにキャッシュにファイルが破損しています。私はそれが世話をするのを調べなければならないでしょう。 私を助けてくれてありがとう、もう一度。 – anotherdjohnson

+0

それを聞いてうれしいです。 FYI、 'rm -rf〜/ .ivy2/org.testng'は問題を処理する必要があります。 –

+1

Cedric、私が使用しているファイルはMaven 2リポジトリにあるファイルと同じものなので、それを私のivyキャッシュから削除することは役に立ちません。キャッシュ内のファイルに問題はありますか? – anotherdjohnson

0

かもしれません。testng.jarはクラスパスに含まれていない可能性があります。

+0

私の元の投稿で述べたように、私はクラスパスをチェックしました。 Cedricの上記の反応をご覧ください。 – anotherdjohnson

4

あなたの使用してMavenは

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

jcommander.jar(例えばjcommander-1.29.jarが)のbuild.xml

で言及されているファイルセットのディレクトリに存在しなければならないあなたのpom.xmlにこれを追加しようとした場合JCommanderはantを使用中にtestng.jar内にある必要があります http://mvnrepository.com/artifact/com.beust/jcommander/1.27

OR、

あなたはからダウンロードすることができます。 testng.jarファイルが壊れている可能性がありますので、古いtestng.jarを新しいもので置き換えてください。

0

Maven以外のプロジェクトでも同じ問題がありました。 Maven Centralからtestng jarを取得しましたが、TestNGのすべての依存関係は含まれていませんでした。 jarをTestNGサイトから直接ダウンロードすると、依存関係が含まれているため、この問題は解決されました。

私は TestNG's download page上方向にもっと注意を払っているはず

...

TestNGの最新バージョンは、アリのユーザーはこちらMavenのセントラル・またはからダウンロードすることができます。

0

私は Mavenのリポジトリからjcommandar jarをダウンロードして、私のjarファイル

しかし、この問題 開始がここにTestNGの6.8.5バージョン

0

問題に来て、それを追加したとき、私の蟻スタートは作業特定のバージョンのtestNG jarにjcommander jarコードが含まれていないことがあります。その結果、クラスパスをJcommander jarに個別に追加する必要があります。

あなたはそれが問題を解決します実行すると、うまくいけば

関連する問題