Как решить: «Причина: класс org.apache.tools.ant.taskdefs.optional.junit.JUnitTask не найден».во время запуска "муравейник"? - PullRequest
19 голосов
/ 04 июля 2011

У меня есть цель с именем test , и я хочу провести несколько тестов.

Я поместил важные части в build.xml .Он включает в себя:

<property name='lib.dir' value='lib' />

<path id='classpath'>
     <fileset dir="${lib.dir}" includes="**/*.jar" />
</path>

И я поместил junit.jar и ant-junit.jar (это обязательно?) В Каталог lib .

Однако, если я запустил

ant test.

Ошибка вывода:

test:

BUILD FAILED
/home/xiaohan/EclipseWorkSpace/AntTest/build.xml:82: Problem: failed to create task or type junit
Cause: the class org.apache.tools.ant.taskdefs.optional.junit.JUnitTask was not found.
        This looks like one of Ant's optional components.
Action: Check that the appropriate optional JAR exists in
        -/usr/share/ant/lib
        -/home/xiaohan/.ant/lib
        -a directory added on the command line with the -lib argument

Do not panic, this is a common problem.
The commonest cause is a missing JAR.

This is not a bug; it is a configuration problem

Дополнительно, еслиЯ поместил два файла jar в / usr / share / ant / lib с набором $ ANT_HOME, он все еще не работает.

Действительно, спасибо за любые подсказки

Ответы [ 5 ]

30 голосов
/ 02 января 2015

В моем случае (с использованием Mint на основе Debian)

sudo apt-get install ant-optional

было единственным, что сработало.

16 голосов
/ 03 ноября 2014

Проблема была решена в системах на основе RHEL после установки ant-junit:

$ sudo yum install ant-junit
4 голосов
/ 04 июля 2011
<property name='lib.dir' value='lib' />

<path id='classpath'>
    <fileset dir="${lib.dir}" includes="**/*.jar" />
</path>

это не имеет ничего общего с самим Ant classpath.Это свойства, которые вы можете использовать в своих задачах.Вы должны поместить jar в предложенные dirs или добавить аргумент командной строки.

Попробуйте запустить его так:

ant -lib /path/to/the/ant-junit.jar/ test
1 голос
/ 02 мая 2012

Я видел это сообщение, потому что я пропустил включение ant-junit.jar из Classpath моей IDE, например в Eclipse> щелкните правой кнопкой мыши свой проект> Выполнить как> Выполнить настройки ..> Путь к классу (вкладка)> Убедитесь, что файл ant-junit.jar находится там.

0 голосов
/ 02 января 2015

Когда вы запускаете задачи JUnit, вы должны убедиться, что и ваш classpath, использованный для ваших сборок, и путь к банкам junit добавлены в ваш путь к классам.

Я предпочитаю ставить junitjars внутри моего проекта, так что другие не должны устанавливать их на свои машины, чтобы моя сборка работала.Я бы установил их в ${basedir}/antlib/junit

Я использую ${basedir}/antlib для хранения всех различных jar-сборок Ant, таких как jar-Contrib, JaCoCo, Findbugs и т. Д. Поскольку это внутри моего проекта,checkout всегда будет включать эти jar-файлы, и сборка будет работать для всех:

 <classpath id="junit.path">
    <fileset dir="${basedir}/antlib/junit"/>
</classpath>

Это создаст путь, содержащий ваши JUnit-jar-файлы.Теперь, чтобы скомпилировать ваши тесты junit:

<javac dest="${target.dir}/test-classes"
   src=${src.test.java}">
   <classpath refid="javac.classpath"/>   <!-- Your main build classpath -->
   <classpath refid="junit.path"/>        <!-- Your JUnit classpath -->
   <classpath path="${main.destdir}"/>    <!-- These the classes you've built-->

Обратите внимание, что размещение банок JUnit в $ANT_HOME/lib main не работает, потому что это зависит от того, установлен <javac> includeAntRuntime или нет.Всегда настоятельно рекомендуется не устанавливать этот набор, чтобы сделать вашу сборку более независимой от платформы.

Также не забудьте включить этот junit.path в свою задачу <junit>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...