Неожиданно не удается выполнить тесты TestNG из ant ([testng] Caused by: java.lang.ClassNotFoundException: com.beust.jcommander.ParameterException)

Я использую ant и TestNG 6.1.1, и вчера мои тесты отлично работали. Сегодня, когда я пытаюсь запустить тесты, я получаю NoClassDefFoundError с участием com/beust/jcommander/ParamException. Вот результат:

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

Я также указал полный путь для класса без везения. Я проверил classpath, и все кажется прекрасным, у кого есть идеи по этому поводу?

Ответ 1

Если вы используете ant, JCommander должен быть внутри testng.jar, поэтому я думаю, что ваш файл testng.jar может быть поврежден.

Ответ 2

Если вы используете 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

ИЛИ

JCommander должен находиться внутри testng.jar во время использования ant. Ваш файл testng.jar может быть поврежден, поэтому, пожалуйста, замените старый testng.jar на новый.

Ответ 4

Может быть testng.jar не находится в пути к классам.

Ответ 5

У меня была такая же проблема с проектом, отличным от Maven. Я получил тестовую банку от Maven Central, но не содержал все зависимости TestNG. Загрузка контейнера непосредственно с сайта TestNG решила проблему, так как она содержит зависимости.

Я должен был больше обратить внимание на указания на странице загрузки TestNG...

Последняя версия TestNG может быть загружена из Maven Central или здесь для пользователей ant.

Ответ 6

Мой ant начинает работать, когда я загрузил jcommandar jar из Maven и добавил его в файл jar

Но эта проблема Начинается с версии testng 6.8.5

Ответ 7

Проблема заключается в том, что некоторые версии контейнера testNG не содержат jar-кода jcommander внутри них. В результате вам нужно отдельно добавить путь к JQuery jarander.

Добавление jcommander jar в ваш путь к классу при запуске будет исправлять проблему, надеюсь,