Java eclipse内部的ant junit构建错误

Java eclipse内部的ant junit构建错误,java,eclipse,ant,junit,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\

我希望有一些人已经看到了我现在使用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
我的环境设置:

  • 视窗7
  • Eclipse 3.6 RC2 32位
  • JDK 1.6更新32位
  • 蚂蚁1.7.2
  • JUnit4(在eclipse中):在我的项目jar文件夹中有Junit-dep-4.8.2.jar

值得一提的是,如果我使用相同的ant脚本在eclipse外部编译代码,那么一切都可以正常工作,但在eclipse内部不起作用。我试着用谷歌搜索上面样式表上面的错误,但那帮不了我多少忙。我的猜测是,在eclipse中使用了不同版本的junit,但我可能错了

请尝试转到
首选项->Ant->Runtime
并设置Ant Home。。。这是您的ant安装文件夹的一部分。默认情况下,eclipse附带并使用ant作为插件


如果需要,您还可以添加额外的jar和文件夹。

我在使用以下环境的Eclipse中遇到了相同的样式表问题:

  • Windows 7 x64
  • Eclipse 3.7.2(SR2)32位
  • JDK 1.6.0_32位
  • Ant1.7.2(来自Eclipse)或1.7.4(来自Apache,当前版本)
  • JUnit4.8.1(项目依赖性)
我的构建在使用JDK1.6.031时成功,因此样式表问题似乎是Java 6 build 32发布时引入的Ant或Java错误。我在Apache的Bugzilla系统中找不到任何报告。如果它对某人有帮助,那么以下是build 32中包含的bug修复:

我目前的解决方法是使用Java6JDKbuild31

更新:使用较新JDK的变通方法

Eclipse中的Ant失败始于Java6U32和Java7u4中引入的缺陷。中报告了这一传奇,包括一个允许您使用较新JDK的解决方案

  • 从中下载
    org.apache.xalan
    org.apache.xml.serializer
    插件
  • 将它们复制到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版本()中提供

更新:计划在Eclipse4.4中使用Ant1.9.1

正如@OliBlogger提到的,Apache修复了Ant1.9.1中的根本问题。Eclipse计划这样做(也许更早,Eclipse bug系统还没有4.3.x里程碑)

更新:在Eclipse4.4中修复

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

有人说这方面的修复是在Ant 1.9中进行的,但不幸的是,它现在似乎被1.9.1禁用了。所以在这段时间里,这对我来说很有效

您可以使用中的样式表。
然后将“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.v20109-1030 Java编译器:1.6


我将java改为JRE6,根据文档,它运行得非常好,Ant任务需要ApacheXalan2.4.1+或XalanXSLT。它们可以从外部图书馆获得。确保您有这些依赖项。

谢谢您的快速回复。我将我的ant主页设置为ant安装文件夹,但这并不能帮助我解决这些错误。我还想知道是否需要为ant(在eclipse中运行)添加任何其他jar文件来解决这些文件?如果我真的需要添加更多的jar文件,这些文件会是什么?我会在哪里添加它们?在首选项中的相同位置。是的,我这样做了,但仍然不能解决问题。我在第一篇文章中提到的环境设置是我在eclipse设置中应用的。@Tuan——使用JDK1.6U31而不是32。我也有同样的问题,但这解决了它@泰勒,对不起,我没听到你的评论。它被“显示更多评论”链接隐藏。我仍然没有找到解决问题的真正方法。我向Eclipse报告了该错误:。另一个解决方案是在Eclipse之外执行ant脚本。这在不改变当前jdk的情况下对我有效。同样的问题也发生在我使用NetBeans时。我回到了JDK1.6.031。只需阅读您答案的更新(Apache在Ant中修复了问题。Apache已修复了根本问题;它可能在Ant1.9.0版本中可用(Apache Bug 54641))。这是个好消息。但是,该修复程序的目标版本是1.9.1。当前版本为1.8.4。