Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Suddenly can't run TestNG tests from ant ([testng] Caused by: java.lang.ClassNotFoundException: com.beust.jcommander.ParameterException)

Tags:

ant

testng

I am using ant and TestNG 6.1.1, and I had my tests working just fine yesterday. Today when I try to run the tests I get a NoClassDefFoundError involving com/beust/jcommander/ParamException. Here is the output:

[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.

Here is the .xml file I'm using:

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

I've also specified the complete path for the class with no luck. I've checked the classpath and everything seems fine, does anyone have any ideas on this?

like image 630
anotherdjohnson Avatar asked Aug 17 '11 23:08

anotherdjohnson


3 Answers

If you're using ant, JCommander should be inside testng.jar, so I'm thinking your testng.jar file might be corrupt.

like image 121
Cedric Beust Avatar answered Jan 03 '23 18:01

Cedric Beust


If your using Maven try adding this to your pom.xml

<dependency>
  <groupId>com.beust</groupId>
  <artifactId>jcommander</artifactId>
  <version>1.30</version>
</dependency>
like image 29
user1807948 Avatar answered Jan 03 '23 18:01

user1807948


jcommander.jar (e.g. jcommander-1.29.jar) should be present on fileset directory which is mentioned at build.xml

You can download it from: http://mvnrepository.com/artifact/com.beust/jcommander/1.27

OR,

JCommander should be inside testng.jar during using ant. Your testng.jar file might be corrupted, so please replace old testng.jar by new one.

like image 37
Ripon Al Wasim Avatar answered Jan 03 '23 17:01

Ripon Al Wasim