eclipse中的ant junit构建错误

时间:2012-05-10 14:23:52

标签: java eclipse ant junit

我希望有些人已经看到并解决了我现在使用ant脚本的问题。我正在使用ant脚本在eclipse中编译我的java代码,但是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 update 32 32 bit
  • Ant 1.7.2
  • Junit 4(在eclipse中):在我的项目jar文件夹中我有junit-dep-4.8.2.jar

有一点要提一下,如果我使用相同的ant脚本在eclipse之外编译我的代码,一切正常,但它在eclipse中不起作用。我试图谷歌上面的样式表上面的错误,但这对我没有多大帮助。我的猜测是某种方式,在eclipse中使用不同版本的junit,但我可能错了。

6 个答案:

答案 0 :(得分:17)

我使用以下环境在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,当前)
  • Junit 4.8.1(项目依赖)

我的构建在使用JDK 1.6.0_31时成功,因此看起来样式表问题是随Java 6 build 32发布的Ant或Java错误。我在Apache的Bugzilla系统中找不到任何报告。如果它对某人有帮助,那么这些是构建32中包含的错误修复:http://www.oracle.com/technetwork/java/javase/2col/6u32bugfixes-1579554.html

我目前的解决方法是使用Java 6 JDK build 31。

更新:使用较新JDK的解决方法

Eclipse中的Ant故障始于Java 6u32和Java7u4中引入的缺陷。该问题在Eclipse Bug #384757中报告,包括允许您使用较新JDK的解决方法。

  • Eclipse Orbit project
  • 下载org.apache.xalanorg.apache.xml.serializer个插件
  • 将它们复制到Java java.ext.dirs属性
  • 中列出的目录

我使用以下目录,因为它们是默认定义的,与JDK版本无关:

  • 在Windows上:C:\Windows\Sun\Java\lib\ext
  • 在Mac上:/Users/$USER/Library/Java/Extensions

向Oracle报告了根问题,但是the bug is no longer in their bug database。我不乐观,它将永远修复。

更新:Apache修复了Ant中的问题

Apache修复了根本问题;它可能在Ant 1.9.0版本(Apache Bug #54641)中可用。

更新:计划用于Eclipse 4.4的Ant 1.9.1

正如@OliBlogger所提到的,Apache修复了Ant 1.9.1中的根本问题。 Eclipse计划update to Ant 1.9.1 in Eclipse 4.4(也许更早,Eclipse bug系统还没有4.3.x里程碑)。

更新:已在Eclipse 4.4中修复

我确认我的构建现在使用Java 7 JDK build 67和Ant 1.9.2与Eclipse 4.4.1(Windows 7)一起分发,而不使用Orbit插件解决方法。

答案 1 :(得分:7)

请尝试转到Preferences->Ant->Runtime并将Ant Home ...设置为您的ant安装文件夹。默认情况下,eclipse随附并使用作为插件提供的ant。

如果需要,您还可以添加其他广告文件夹。

答案 2 :(得分:1)

https://bugs.eclipse.org/bugs/show_bug.cgi?id=384757#c18中已经说明了这个问题的解决方案是在Ant 1.9中,但遗憾的是它现在似乎已经在1.9.1中进行了调整。所以在这段时间里,这对我有用。

您可以使用http://svn.apache.org/viewvc?view=revision&revision=1453414中的样式表。 然后将“stledir”添加到报告代码中。例如:styledir="c:\utils"

答案 3 :(得分:0)

我尝试过使用一些不同的JRE / JDK设置(全部为1.6和1.7),并且存在问题。

它显然不是一个完美的解决方案,但如果JUnit报告是" raw"我似乎不会遇到这些问题。在构建文件中 - 不包含在目标中。

显然,不良的解决方法是目标是Ant的一个重要方面,但有时报告构建目标/依赖关系并不是关键任务。对我而言,这不是一个问题,因为我以一次性的方式运行这些报告,而不是作为构建的一部分。

希望它对某人有所帮助,但也希望能得到妥善解决。

答案 4 :(得分:0)

我有类似的问题。我的项目有这个组合:

Java:jdk1.6.0_45 Ant:eclipse \ plugins \ org.apache.ant_1.8.2.v20120109-1030 Java编译器:1.6

我将我的java更改为JRE6并且它工作得很好

答案 5 :(得分:0)

根据文档herehere,Ant任务<JUnitReport>需要Apache Xalan 2.4.1+或Xalan XSLT。可以从外部库xalan.jar中获得它们。确保您具有这些依赖项。