繁体   English   中英

为什么Cobertura似乎切换了Eclipse的Java版本?

[英]Why does Cobertura seem to switch my Eclipse's Java version?

这些是导致错误的步骤:

  1. 在Eclipse(Cntrl-F11)中运行我的单元测试。 所有67个都成功了,并以此报告。
  2. 使用Ant build.xml文件,运行Cobertura任务以生成一份覆盖率报告。 任务失败,说明单元测试失败。
  3. 当我尝试再次使用Eclipse运行单元测试时,收到以下错误:

Unsupported major.minor version 51.0

(这些症状一直持续到我在Eclipse中使用Project-> Clean为止。)

我的Cobertura蚂蚁任务是:

<target name="report-test" description="Generate a test coverage report." depends="clean, compile">
        <taskdef resource="tasks.properties">
            <classpath>
                <pathelement location="${lib.dir}/cobertura-1.9.4.1/cobertura.jar" />
                <pathelement location="${lib.dir}/cobertura-1.9.4.1/lib/asm-3.0.jar" />
                <pathelement location="${lib.dir}/cobertura-1.9.4.1/lib/asm-tree-3.0.jar" />
                <pathelement location="${lib.dir}/cobertura-1.9.4.1/lib/log4j-1.2.9.jar" />
                <pathelement location="${lib.dir}/cobertura-1.9.4.1/lib/jakarta-oro-2.0.8.jar" />
            </classpath>
        </taskdef>
        <cobertura-instrument todir="${build.dir}/cobertura-instrument">
            <fileset dir="${build.dir}">
                <include name="**/*.class"/>
            </fileset>
        </cobertura-instrument>
        <junit printsummary="yes" fork="true" haltonfailure="yes" showoutput="yes">
            <classpath location="${build.dir}/cobertura-instrument"/>
            <classpath location="${build.dir}"/>
            <classpath refid="classpath.test" />
            <sysproperty key="net.sourceforge.cobertura.datafile" file="cobertura.ser"/>
            <formatter type="xml" />
            <batchtest todir="doc/junit">
                <fileset dir="${test.dir}" />
            </batchtest>
        </junit>
        <cobertura-report srcdir="${src.dir}" destdir="doc/coverage" format="xml" />
        <delete file="cobertura.ser"/>
    </target>

Coberatura尚未切换Eclipse的Java版本。

它实际上所做的是使用一种比您用来运行Eclipse的Java更新的Java版本重新编译类。 Eclipse无法加载这些.class文件。

短期解决方案是让Eclipse在运行Coberatura之后清理并重建项目,就像您目前正在做的那样。

从长远来看,您应该更改Eclipse以使其使用与您的Ant构建相同的Java版本运行,或者更改Ant构建文件,以免将“ .class”文件写入Eclipse工作区。 或两者兼而有之,因为其他东西在Eclipse工作区中写入内容也会导致其他问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM