0

I am trying to upgrade to Java 7 on an Ant project which will use Cobertura 2.0.3.

Cobertura target in build.xml:

<target name="process-classes" depends="compile" description="post-process the generated files from compilation, for example to do bytecode enhancement on Java classes.">
        <path id="cobertura.auxpath">
              <pathelement path="${target.dir}/classes"/>
              <pathelement location="classes"/>
        </path>

        <mkdir dir="${target.dir}/cobertura-ser" />
        <mkdir dir="${target.dir}/cobertura-classes" />

        <!-- Copy all the files into the file that eventually get's built into the instrumented JAR -->
        <copy todir="${target.dir}/cobertura-classes">
            <fileset dir="${target.dir}/classes" /> 
        </copy>

        <!-- Instrument all the classes in place -->
        <cobertura-instrument todir="${target.dir}/cobertura-classes" 
            datafile="${target.dir}/cobertura-ser/cobertura.ser" 
            classpathref="cobertura.path">
            <fileset dir="${target.dir}/cobertura-classes" >
                <include name="**/*.class" />
            </fileset>
            <auxClasspath>
              <path refid="cobertura.auxpath" />
            </auxClasspath>
        </cobertura-instrument> 
    </target>

I am seeing ClassNotFoundException and ExceptionInInitializerError during the instrumentation phase of the build.

[cobertura-instrument] Cobertura 2.0.3 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
[cobertura-instrument] Sep 16, 2014 1:53:50 PM net.sourceforge.cobertura.coveragedata.TouchCollector registerClass
[cobertura-instrument] SEVERE: Exception when registering class: {path}/dao/DefaultDAO
[cobertura-instrument] java.lang.ClassNotFoundException: {path}.dao.DefaultDAO
[cobertura-instrument]  at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
[cobertura-instrument]  at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[cobertura-instrument]  at java.security.AccessController.doPrivileged(Native Method)
[cobertura-instrument]  at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[cobertura-instrument]  at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
[cobertura-instrument]  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[cobertura-instrument]  at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
[cobertura-instrument]  at java.lang.Class.forName0(Native Method)
[cobertura-instrument]  at java.lang.Class.forName(Class.java:266)
[cobertura-instrument]  at net.sourceforge.cobertura.coveragedata.TouchCollector.registerClass(TouchCollector.java:80)
[cobertura-instrument]  at {path}.dao.DefaultDAO.__cobertura_init(DefaultDAO.java)
[cobertura-instrument]  at {path}.dao.DefaultDAO.<clinit>(DefaultDAO.java)
[cobertura-instrument] WARN   instrumentClass, Unable to instrument file C:\code\policy\main\policy-base\target\cobertura-classes\{path}\persistence\cascade\builder\BuildingCascadeBuilder.class
[cobertura-instrument] java.lang.ExceptionInInitializerError
[cobertura-instrument]  at java.lang.Class.forName0(Native Method)
[cobertura-instrument]  at java.lang.Class.forName0(Native Method)      at java.lang.Class.forName(Class.java:266)
[cobertura-instrument]  at java.lang.Class.forName(Class.java:266)
[cobertura-instrument]  at net.sourceforge.cobertura.instrument.CoberturaClassWriter.getCommonSuperClass(CoberturaClassWriter.java:32)
[cobertura-instrument]  at org.objectweb.asm.ClassWriter.a(Unknown Source)
[cobertura-instrument]  at org.objectweb.asm.Frame.a(Unknown Source)
[cobertura-instrument]  at org.objectweb.asm.Frame.a(Unknown Source)
[cobertura-instrument]  at org.objectweb.asm.MethodWriter.visitMaxs(Unknown Source)
[cobertura-instrument]  at org.objectweb.asm.MethodVisitor.visitMaxs(Unknown Source)
[cobertura-instrument]  at org.objectweb.asm.util.CheckMethodAdapter.visitMaxs(Unknown Source)
[cobertura-instrument]  at org.objectweb.asm.MethodVisitor.visitMaxs(Unknown Source)
[cobertura-instrument]  at org.objectweb.asm.commons.LocalVariablesSorter.visitMaxs(Unknown Source)
[cobertura-instrument]  at org.objectweb.asm.tree.MethodNode.accept(Unknown Source)
[cobertura-instrument]  at org.objectweb.asm.util.CheckMethodAdapter$1.visitEnd(Unknown Source)
[cobertura-instrument]  at org.objectweb.asm.MethodVisitor.visitEnd(Unknown Source)

What am I doing wrong?

ABC123
  • 1,037
  • 2
  • 20
  • 44

1 Answers1

0

The errors are resolved if I comment this block:

<fileset dir="${target.dir}/cobertura-classes" >
    <include name="**/*.class" />
</fileset>

I don't know why. If you know please post an answer.

I get this:

process-classes:
    [mkdir] Created dir: C:\code\policy\main\policy-base\target\cobertura-ser
    [mkdir] Created dir: C:\code\policy\main\policy-base\target\cobertura-classes
     [copy] Copying 465 files to C:\code\policy\main\policy-base\target\cobertura-classes
[cobertura-instrument] Cobertura 2.0.3 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
[cobertura-instrument] Sep 16, 2014 4:08:10 PM net.sourceforge.cobertura.coveragedata.CoverageDataFileHandler saveCoverageData
[cobertura-instrument] INFO: Cobertura: Saved information on 0 classes.  

Does it mean that no classes are instrumented?

[EDIT] I changed to this and classes are getting instrumented. However my build fails for a timeout issue.

<fileset dir="${target.dir}/classes" >
    <include name="**/*.class" />
    <exclude name="**/*Test.class" />
</fileset>
ABC123
  • 1,037
  • 2
  • 20
  • 44