【问题标题】:Jenkins: EMMA Verify Error詹金斯:EMMA 验证错误
【发布时间】:2014-01-29 13:26:20
【问题描述】:
java.lang.VerifyError: Expecting a stackmap frame at branch target 11 in method
tests.FieldTest.<init>()V at offset 4
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:190)

有人有想法吗?

构建.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="TicTacToe" default="jar" basedir=".">

    <property name="src.dir" value="${basedir}/src" />
    <property name="src.dir.tests" value="${src.dir}/tests" />

    <property name="lib.dir" value="${basedir}/lib" />
    <property name="lib.dir.compile" value="${lib.dir}/compile" />
    <property name="lib.dir.test" value="${lib.dir}/test" />

    <property name="target.dir" value="${basedir}/target" />
    <property name="target.dir.classes" value="${target.dir}/classes" />
    <property name="target.dir.test.classes" value="${target.dir}/test-classes" />
    <property name="target.dir.test.reports" value="${target.dir}/test-reports" />
    <property name="target.dir.test.coverage" location="${target.dir}/coverage" />
    <property name="target.dir.test.coverage.meta" location="${target.dir}/coverage/metadata" />
    <property name="target.dir.test.instrumentation" location="${target.dir}/instr-classes" />
    <property name="target.dir.doc" value="${target.dir}/doc" />

    <path id="project.classpath">
        <fileset dir="${lib.dir.compile}" includes="*.jar" />
    </path>

    <path id="path.classes.run">
        <path refid="project.classpath" />
        <path location="${target.dir.classes}" />
    </path>

    <path id="path.test.run">
        <path refid="path.classes.run" />
        <path location="target.dir.test.classes" />
    </path>

    <target name="clean">
        <delete dir="${target.dir}" />
    </target>

    <target name="prepare">
        <mkdir dir="${target.dir}" />
        <mkdir dir="${target.dir.classes}" />
        <mkdir dir="${target.dir.classes}" />
        <mkdir dir="${target.dir.doc}" />
        <mkdir dir="${target.dir.test.classes}" />
        <mkdir dir="${target.dir.test.reports}" />
        <mkdir dir="${target.dir.test.coverage}" />
        <mkdir dir="${target.dir.test.coverage.meta}" />
        <mkdir dir="${target.dir.test.instrumentation}" />
    </target>

    <target name="prebuild.classes">
        <javac srcdir="${src.dir}" destdir="${target.dir.classes}" excludes="${src.dir.tests}" classpathref="project.classpath" includeantruntime="false" />
    </target>

    <target name="prebuild.test" depends="prebuild.classes">
        <javac srcdir="${src.dir.tests}" destdir="${target.dir.test.classes}" classpathref="path.classes.run" includeantruntime="false" />
    </target>

    <property name="emma.dir" value="/home/tebbje/emma/lib" />
    <property name="emma.enabled" value="true" />

    <path id="emma.lib">
        <pathelement location="${emma.dir}/emma.jar" />
        <pathelement location="${emma.dir}/emma_ant.jar" />
    </path>

    <taskdef resource="emma_ant.properties" classpathref="emma.lib" />

    <target name="reports" depends="prebuild.test">

        <copy todir="${target.dir.test.instrumentation}">
            <fileset dir="${target.dir.test.classes}" />
        </copy>

        <emma enabled="${emma.enabled}">
            <instr instrpath="${target.dir.test.instrumentation}" metadatafile="${target.dir.test.coverage.meta}/metadata.emma" merge="true" mode="overwrite" />
        </emma>

        <junit printsummary="yes" fork="true" haltonfailure="no">
            <classpath>
                <pathelement location="${target.dir.test.coverage.instrumentation}" />
                <pathelement location="${target.dir.test.classes}" />
                <path refid="path.test.run" />

                <path refid="emma.lib" />

            </classpath>
            <!--
            <jvmarg value="-Demma.coverage.out.file=${target.dir.test.coverage.meta}/metadata.emma" />
            <jvmarg value="-Demma.coverage.out.merge=true" />
            //-->
            <formatter type="xml" />
            <formatter type="plain" />

            <batchtest todir="${target.dir.test.reports}">
                <fileset dir="${src.dir}">
                    <include name="**/*Test.java" />
                </fileset>
            </batchtest>
        </junit>

        <junitreport tofile="TESTS-TestSuites.xml" todir="${lib.dir.test}">
            <fileset dir="${lib.dir.test}">
                <include name="TEST-*.xml" />
            </fileset>
            <report format="frames" todir="${lib.dir.test}" />
        </junitreport>
        <!--
        <emma enabled="${emma.enabled}">
            <report sourcepath="${src.dir}">
                <fileset dir="${target.dir.test.coverage.meta}">
                    <include name="*.emma" />
                </fileset>
                <txt outfile="./reports/coverage/coverage.txt" />
                <html outfile="./reports/coverage/coverage.html" depth="class" />
            </report>
        </emma>
//-->
    </target>

    <target name="javadoc.generate">
        <javadoc packagenames="*" sourcepath="${src.dir}" destdir="${target.dir.doc}" classpathref="project.classpath" />
    </target>

    <target name="javadoc" depends="javadoc.generate">
        <jar destfile="${target.dir}/${ant.project.name}-javadoc.jar" basedir="${target.dir.doc}" />
    </target>

    <target name="sources">
        <jar destfile="${target.dir}/${ant.project.name}-sources.jar" basedir="${src.dir}" />
    </target>

    <target name="jar">
        <echo message="Project looks good! Deploy JAR..." />

        <jar destfile="${target.dir}/${ant.project.name}.jar" basedir="${target.dir.classes}">
            <manifest>
                <attribute name="Main-Class" value="control.Control" />
            </manifest>
            <zipgroupfileset dir="./lib/compile" includes="**/*.jar" />
        </jar>
    </target>

</project>

【问题讨论】:

  • 签出stackoverflow.com/questions/15122890/…关于Stackk溢出验证错误还有很多其他问题
  • 但他们没有解决我的问题 ;)
  • 是的。我没有解决这个问题..所以我尝试了现在正在工作的 jacoco。但为什么艾玛不会跑 - 我还是不知道..
  • 有很多关于这个错误和 Java 1.7 的 cmets。解决方案的范围从回到 1.6,请求使用 java 1.6 构建的新固定库,并使用现在被 oracle 弃用的编译器指令。
  • 是的,我知道。我不想使用已弃用的指令。也不是java 1.6。其他方法也没有解决我的病 ;) 所以暂时搁置话题并与 jacoco 进一步合作.. :) 但感谢您的关注!

标签: java junit jenkins emma verifyerror


【解决方案1】:

为什么你使用 Emma 而不是 Jacoco? Jacoco 大部分工作都是开箱即用的,并且仍在开发中。我认为艾玛不会走得更远。

https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-31
    • 2019-11-11
    • 2019-05-23
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多