Cobertura script ant manca classi Log4J
-
21-09-2019 - |
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?
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