Domanda

Ho cercato di ottenere Cobertura in esecuzione all'interno del mio script ant, ma sono proprio bloccato all'inizio. Quando provo ad inserire la cobertura taskdef mi manca le librerie Log4J.

proprietà Ant & classpath

<property name="cobertura.dir" location="/full/path/to/cobertura-1.9.3" />
<path id="cobertura.classpath">
    <fileset dir="${cobertura.dir}">
        <include name="cobertura.jar" />
        <include name="lib/**/*.jar" />
    </fileset>
</path>
<taskdef classpathref="cobertura.classpath" resource="tasks.properties" />

Il mio obiettivo formica

<!-- ================================= 
      target: cobertura              
     ================================= -->
<target name="cobertura" depends="clean, init" description="Generates cobertura coverage reports">
    <cobertura-instrument todir="${dir.build.instrumented}">
        <fileset dir="${dir.build}">
            <include name="**/*.class" />
        </fileset>
    </cobertura-instrument>
</target>

Credo di aver fatto tutto come è descritto nella Cobertura documentazione ma ottengo questo

errore di generazione Ant

BUILD FAILED
build.xml:95: java.lang.NoClassDefFoundError: org/apache/log4j/Logger

All'interno della $ {} cobertura.dir non è il lib cartella con tutti i file. Ho scompattato dalla distribuzione cobertura ZIP direttamente in quella directory.

Mi sto perdendo un passo? Qualcosa di sbagliato con la mia configurazione finora?

È stato utile?

Soluzione

Ho anche incontrato questo problema oggi e risolto specificando la posizione di tutte le librerie richieste come parte del percorso di classe fornito al mio compito taskdef.

<path id="cobertura.class.path">
    <pathelement location="${common.dir}/../tools/cobertura/cobertura.jar" />
    <pathelement location="${common.dir}/../tools/cobertura/lib/asm-3.0.jar" />
    <pathelement location="${common.dir}/../tools/cobertura/lib/asm-tree-3.0.jar" />
    <pathelement location="${common.dir}/../tools/cobertura/lib/log4j-1.2.9.jar" />
    <pathelement location="${common.dir}/../tools/cobertura/lib/jakarta-oro-2.0.8.jar" />
</path>

<taskdef classpathref="cobertura.class.path" resource="tasks.properties" />

Altri suggerimenti

Vai al tuo dir formica / lib e assicurarsi che non v'è alcun file cobertura.jar lì. Se è lì -. Rimuoverlo e riprovare

Modificare questo

<include name="lib/**/*.jar" />

a

<include name="*.jar" />

Spero che questo aiuti!

Ho appena aggiornato alla più recente cobertura e la mia funziona benissimo. E 'possibile che qualcos'altro è nel classpath con una versione diversa di log4j in modo che si sta riprendendo quello sbagliato?

Assicurarsi che classpath utilizzato in taskdef e cobertura-strumento sono gli stessi. Questo mi ha aiutato con lo stesso problema.

Anche ho affrontato questo problema, ho solo aggiunto tutti i vasi forniti con cobertura nel classpath per risolvere questo problema

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top