Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 错误!非静态Java函数的第一个参数';更换';不是有效的对象引用_Eclipse_Ant_Junit - Fatal编程技术网

Eclipse 错误!非静态Java函数的第一个参数';更换';不是有效的对象引用

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

我试图让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 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.9.3-bin.zip并解压缩到您想要的地方
  • 打开eclipse并选择窗口-->首选项
  • 您可以看到“首选项”窗口。请在左侧选择ant-->运行时
  • 现在关注窗口的右侧位置。确保您现在处于类路径选项卡上,并选择Ant Home Entries(默认)。右侧的按钮Ant Home…现在可以单击
  • 毫无疑问,单击Ant Home…按钮并选择Ant-1.9.3所在的文件夹。在这一步中,如果您选择了错误的文件夹,Eclipse可能会显示错误消息,例如指定的Ant home不包含“lib”目录。如果选择正确的目录,Ant Home Entries(默认)将变成**Ant Home Entries()
  • 别忘了单击“应用”
  • 更改这些内容后,当右键单击build.xml文件并选择运行-->1 Ant build时,不会显示错误消息,因为您的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)这真的很顺利,生成了报告。对我来说也很有效。谢谢:-)