Ant Ошибка сборки junit внутри eclipse

Я надеюсь, что есть люди, которые видели и имеют решение проблемы, с которой я сейчас сталкиваюсь с ant script. Я использую ant script для компиляции моих java-кодов в eclipse, но eclipse продолжает давать мне эти ошибки.

[junitreport] Processing E:\workspace\DataOrchestrationDevelopment\DataOrchestration\Logs\jsreports\junit\html\TESTS-TestSuites.xml to C:\Users\u0160235\AppData\Local\Temp\null1503375679
[junitreport] Loading stylesheet jar:file:/E:/software/apache/apache-ant-1.8.2/lib/ant-junit.jar!/org/apache/tools/ant/taskdefs/optional/junit/xsl/junit-frames.xsl
[junitreport] : Error! The first argument to the non-static Java function 'replace' is not a valid object reference.
[junitreport] : Error! Cannot convert data-type 'void' to 'reference'.
[junitreport] : Fatal Error! Could not compile stylesheet
[junitreport] Failed to process E:\workspace\DataOrchestrationDevelopment\DataOrchestration\Logs\jsreports\junit\html\TESTS-TestSuites.xml

BUILD FAILED
E:\workspace\DataOrchestrationDevelopment\DataOrchestration\ant\developerbuild.xml:124: The following error occurred while executing this line:
E:\workspace\DataOrchestrationDevelopment\DataOrchestration\ant\QunitAntScript.xml:20: Errors while applying transformations: Fatal error during transformation

Настройки моей среды:

  • Windows 7
  • Eclipse 3.6 RC2 32 бит
  • Обновление JDK 1.6 32 32 бит
  • Ant 1.7.2
  • Junit 4 (in eclipse): в моей папке jar проекта у меня есть junit-dep-4.8.2.jar

Одна вещь, чтобы упомянуть, что если я скомпилирую свои коды за пределами eclipse с помощью того же ant script, все работает отлично, но это не работает внутри eclipse. Я попытался сделать ошибки Google выше таблицы стилей выше, но это не очень помогло мне. Я предполагаю, что так или иначе, внутри eclipse используется другая версия junit, но я могу ошибаться.

Ответ 1

В Eclipse я столкнулся с той же проблемой таблиц стилей, используя следующую среду:

  • Windows 7 x64
  • Eclipse 3.7.2 (SR2) 32-разрядный
  • JDK 1.6.0_32 32-разрядный
  • Ant 1.7.2 (из Eclipse) или 1.7.4 (из Apache, current)
  • Junit 4.8.1 (зависимость проекта)

Моя сборка успешно используется при использовании JDK 1.6.0_31, поэтому проблема с таблицей стилей - это ошибка Ant или Java, представленная с выпуском Java 6 build 32. Я не мог найти никаких отчетов в системе Apache Bugzilla. Если это помогает кому-то, это исправления ошибок, включенные в сборку 32: http://www.oracle.com/technetwork/java/javase/2col/6u32bugfixes-1579554.html

Мое текущее обходное решение - использовать Java 6 JDK build 31.

Обновление: обходной путь для использования нового JDK

Сбой Ant из Eclipse начался с дефекта, введенного в Java 6u32 и Java7u4. Сага сообщается в Eclipse Bug # 384757, включая обходной путь, позволяющий использовать новые JDK.

  • Загрузите плагины org.apache.xalan и org.apache.xml.serializer из проект Eclipse Orbit
  • Скопируйте их в каталог, указанный в свойстве Java java.ext.dirs

Я использую следующие каталоги, потому что они определены по умолчанию и не зависят от версии JDK:

  • В Windows: C:\Windows\Sun\Java\lib\ext
  • На Mac: /Users/$USER/Library/Java/Extensions

Основная проблема была сообщена Oracle, но ошибка больше не находится в базе данных ошибок. Я не оптимист, это когда-нибудь будет исправлено.

Обновление: Apache исправил проблему в Ant

Apache исправил проблему с корнем; он может быть доступен в версии Ant 1.9.0 (Apache Bug # 54641).

Обновление: Ant 1.9.1 запланировано для Eclipse 4.4

Как упоминал @OliBlogger, Apache исправил корень проблемы в Ant 1.9.1. Eclipse планирует обновить до Ant 1.9.1 в Eclipse 4.4 (возможно, скорее, система ошибок Eclipse еще не имеет вехи 4.3.x).

Обновление: исправлено в Eclipse 4.4

Я подтвердил, что моя сборка теперь преуспевает с использованием Java 7 JDK build 67 и Ant 1.9.2, распространяемых вместе с Eclipse 4.4.1 (Windows 7) без использования обходного пути плагина Orbit.

Ответ 2

Попробуйте перейти к Preferences->Ant->Runtime и установите Ant Home... в папку установки Ant. По умолчанию eclipse поставляется с и использует Ant в качестве плагина.

Вы также можете добавить туда дополнительные банки, папки при необходимости.

Ответ 3

В https://bugs.eclipse.org/bugs/show_bug.cgi?id=384757#c18 было указано, что исправление для этого было в Ant 1,9, но, к сожалению, оно похоже на sechduled для 1.9. 1 сейчас. Так что в то же время это сработало для меня.

Вы можете использовать таблицы стилей из http://svn.apache.org/viewvc?view=revision&revision=1453414. Затем добавьте "stledir" в тег отчета. Пример: styledir="c:\utils"

Ответ 4

Я пробовал использовать несколько различных настроек JRE/JDK (все версии 1.6 и 1.7) с проблемами в каждом из них.

Это не идеальное решение, но я, похоже, не сталкиваюсь с этими проблемами, если отчет JUnit является "сырым" в файле сборки - не завернут в цель.

Плохое обходное решение, очевидно, в этих целях является важным аспектом Ant, но иногда для отчетов целей/зависимостей сборки не так важны критические задачи. Это не так много для меня, потому что я использую эти отчеты в виде одноразовой моды, а не как часть сборки.

Надеюсь, что это поможет кому-то, но также надеюсь, что это исправится должным образом.

Ответ 5

У меня была аналогичная проблема. У меня была эта комбинация для моего проекта:

Java: jdk1.6.0_45 Ant: eclipse\plugins\org.apache.ant_1.8.2.v20120109-1030 Компилятор Java: 1.6

Я изменил свой java на JRE6, и он работал абсолютно нормально