Eclipse 错误!非静态Java函数的第一个参数';更换';不是有效的对象引用
我试图让ANT在Eclipse中创建JUNIT测试的HTML报告,但在创建ANT构建后,运行它时出现以下错误:Eclipse 错误!非静态Java函数的第一个参数';更换';不是有效的对象引用,eclipse,ant,junit,Eclipse,Ant,Junit,我试图让ANT在Eclipse中创建JUNIT测试的HTML报告,但在创建ANT构建后,运行它时出现以下错误: [junitreport] Processing C:\Documents and Settings\Administrator\workspace\Home\junit\TESTS-TestSuites.xml to C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\null785926900 [junitreport] Loading stylesheet ja
[junitreport] Processing C:\Documents and Settings\Administrator\workspace\Home\junit\TESTS-TestSuites.xml to C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\null785926900
[junitreport] Loading stylesheet jar:file:/C:/ANT/apache-ant-1.8.3/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 C:\Documents and Settings\Administrator\workspace\Home\junit\TESTS-TestSuites.xml
我需要做什么来解决这个问题
以下是我尝试运行的my Build.xml的部分:
<target name="Home">
<mkdir dir="${junit.output.dir}"/>
<junit fork="yes" printsummary="withOutAndErr">
<formatter type="xml"/>
<test name="Home" todir="${junit.output.dir}"/>
<classpath refid="Home.classpath"/>
</junit>
</target>
<target name="junitreport">
<junitreport todir="${junit.output.dir}">
<fileset dir="${junit.output.dir}">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${junit.output.dir}"/>
</junitreport>
</target>
如果您在JDK1.7中使用Eclipse/JUnit report,请使用JDK1.6。JDK1.7中有一个与Eclipse/JUnit报告类似的bug。这可能是一个类似的报告:Eclipse Bug有明确的文档记录。分析表明是Oracle引入了该漏洞。我需要Java版本7,但JunitReport需要Java版本5和Java版本6的早期版本。显而易见的方法是在Ant junitreport任务中添加“bootclasspath”参数,而Java问题由Oracle在未来的版本中修复。不幸的是,Ant任务junitreport不支持bootclasspath选项。这是支持Ant的人可以做到的吗?当我遇到这个错误时,我不得不在Eclipse中右键单击build.xml文件,选择“以Ant build运行…”选项(菜单中的第三个选项),然后单击JRE选项卡,选择“以与工作区相同的JRE运行”选项,然后继续运行脚本。出于某种原因,这解决了问题。我真的不知道为什么。我尝试过使用一些不同的JRE/JDK设置(都是1.6和1.7),但每种设置都存在各种问题(这或无法访问jar中的XSL文件)
这显然不是一个完美的解决方案,但如果JUnit报告在构建文件中是“原始”的,而不是包装在目标中,我似乎不会遇到这些问题
很明显,目标是Ant的一个重要方面,但有时用于报告构建目标/依赖项的方法并不那么关键。这对我来说还不是什么大问题,因为我以一种一次性的方式运行这些报告,而不是作为构建的一部分。我使用了jdk1.6.45和最新的apache-ant-1.9.2-bin\ 问题解决了 根据MikeBach上的注释 这是bug#, 请阅读: 固定在蚂蚁身上 问候,,
Bhagyaraj我在Eclipse SDK Juno上用*java 1.7.0_51*在Ubuntu 12.04上运行java程序时遇到了这种情况。我接受Bhagyaraj的建议,即使用apache-ant-1.9.2。 (另外,EclipseJuno的默认ant版本是*org.apache.ant_1.8.3*,我使用apache-ant-1.9.3) 您可以按照我的步骤进行设置
我还下载了apache-ant-1.8.4来运行我的构建文件,但是错误无法解决。缺陷是在Java 7u5中引入的。 另一个解释了如何解决这个问题,即更改bootclasspath。(免责声明:我没有尝试测试这个。) 然而,这个解决方案对我来说很好:
- 下载ant-1.9.4
- Eclipse>>首选项>>Ant>>运行时>>AnthonMeentries
- 删除所有1.8.x类路径条目
- 改为添加1.9.4中的所有LIB
根据Ant的说法,这是第二次,如果您没有发布失败的代码,我们怎么知道会出什么问题呢?在将ANT构建指向JDK而不是JRE之后,我能够得到HTML报告。您是如何将ANT构建指向JDK而不是JRE的???另外,请尝试:在build.xml文件所在的命令提示符下运行,以便更快地获取资源。(ANT:JAVA:1.70_45.和ANT-1.9.2)这真的很顺利,生成了报告。对我来说也很有效。谢谢:-)