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更新32位32位
  • Ant 1.7.2
  • Junit 4(在eclipse中):在我的项目jar文件夹中,我有junit-dep-4.8.2.jar

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

我使用以下环境在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#3847​​57中报告了这个问题 ,包括允许您使用较新JDK的解决方法。

  • 从Eclipse Orbit项目下载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报告了根问题,但该bug不再存在于他们的bug数据库中 。 我不乐观它将永远修复。

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

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

更新:针对Eclipse 4.4安排的Ant 1.9.1

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

更新:已在Eclipse 4.4中修复

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

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

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

在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"

我尝试过使用一些不同的JRE / JDK设置(所有1.6和1.7)。

它显然不是一个完美的解决方案,但如果JUnit报告在构建文件中是“原始的” – 我没有遇到这些问题 – 不包含在目标中。

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

希望它可以帮助某人,但也希望这能得到妥善解决。

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

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

我将我的java更改为JRE6,它工作得非常好

根据此处和此处的文档,Ant任务需要Apache Xalan 2.4.1+或Xalan XSLT。 它们可以从外部库xalan.jar获得 。 确保您有这些依赖项。