使用 Ant 的 Jacoco 覆盖抛出 java.lang.instrument.IllegalClassFormatException:检测类时出错

问题描述

我将 Jacoco 与我的 Ant 构建集成。当我运行构建时,测试用例成功执行,然后在我的 TEST-com.worker.ManagerTest.xml 中出现以下异常。 当我添加 excludes="*" 时,不会抛出错误。但是 jacoco.exec 生成的大小为 1kb,当我运行报告时没有生成任何内容。有人可以让我知道我错过了什么吗?

异常:

以下是 jacoco 构建脚本。

<target name="test"  depends="test-compile">
    <mkdir dir="${report.dir}" />
    <jacoco:coverage destfile="${report.dir}/jacoco.exec"  xmlns:jacoco="antlib:org.jacoco.ant" exclclassloader="sun.reflect.DelegatingClassLoader:javassist.Loader">
        <junit fork="true" forkmode="once" printsummary="on">
        <classpath>
            <!--<pathelement location="${basedir}/../../../build/lib/aspectjtools.jar"/>
            <pathelement location="${basedir}/../../../build/lib/aspectjrt.jar"/>-->
            <pathelement path="${test.path}" />
            <pathelement path="${dist.dir}/test/unittest-manager.jar" />
        </classpath>
        <formatter type="xml" />
        <batchtest todir="${report.dir}"  fork="yes">
            <fileset dir="test">
                <include name="**/*Test*" />
            </fileset>
        </batchtest>
    </junit>
    </jacoco:coverage>
    </target>

<target name="report"  depends="test">
    <echo message="Generating Jacoco reports..." />
    <property name="report.dir.file" value="${report.dir}/jacoco.exec"/>
                    <jacoco:report>
                        <executiondata>
                            <file file="${report.dir.file}"/>
                        </executiondata>
                        <structure name="JaCoCo Reports">
                            <classfiles>
                                <fileset dir="${dist.dir}/applications/lib/manager.jar">
                                       <include name="**/*.class"/>
                                </fileset>
                            </classfiles>
                            <sourcefiles encoding="UTF-8">
                                <fileset dir="${src.dir}">
                                 <include name="**/*.java"/>
                                </fileset>
                            </sourcefiles>
                        </structure>
                    <html destdir="${report.dir}/coverage"/>
                    </jacoco:report>
</target>

这是我得到的空报告。

enter image description here

问候, 周六

解决方法

我使用了最新版本 0.8.7 并且它有效。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...