21

我希望有些人已经看到并解决了我现在使用 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 位
  • 蚂蚁 1.7.2
  • Junit 4(在 Eclipse 中):在我的项目 jar 文件夹中,我有 junit-dep-4.8.2.jar

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

4

6 回答 6

17

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

  • 视窗 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 项目下载org.apache.xalanorg.apache.xml.serializer插件
  • 将它们复制到 Javajava.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 计划在 Eclipse 4.4 中更新到 Ant 1.9.1(也许更快,Eclipse 错误系统还没有 4.3.x 里程碑)。

更新:在 Eclipse 4.4 中修复

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

于 2012-06-11T19:23:02.343 回答
7

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

如果需要,您还可以在那里添加其他 jars、文件夹。

于 2012-05-10T14:51:49.070 回答
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"

于 2013-04-17T17:10:45.997 回答
0

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

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

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

于 2015-02-02T20:09:42.233 回答
0

我尝试过使用几种不同的 JRE/JDK 设置(均为 1.6 和 1.7),但每个都有问题。

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

糟糕的解决方法显然是因为目标是 Ant 的一个重要方面,但有时用于报告构建目标/依赖关系并不是那么关键。这对我来说还不是什么大问题,因为我以一种一次性的方式运行这些报告,而不是作为构建的一部分。

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

于 2013-09-25T14:53:28.303 回答
0

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

于 2018-06-29T14:37:23.707 回答