Ich installierte die Fedora 20 findbugs RPMs und meine Ant build.xml
Datei thusly einrichten:FindBugs kann nicht gefunden werden org.apache.bcel.classfile.ClassFormatException
<property name="findbugs.home" location="/usr/share/findbugs"/>
<target name="findbugs" description="static bytecode analysis">
<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask">
</taskdef>
<findbugs home="${findbugs.home}" output="xml" outputFile="bcel-fb.xml">
<sourcePath path="${src.dir}"/>
<fileset dir="${build.dir}">
<include name="**/*.class"/>
</fileset>
</findbugs>
</target>
Das gibt mir den Fehler:
java.lang.IllegalArgumentException: Can't find findbugs.jar in /usr/share/findbugs/lib
Also mache ich /usr/share/findbugs/lib
eine symbolische Verbindung zu /usr/share/java
, wo findbugs.jar
lebt. Das bringt mich ein bisschen weiter, aber jetzt ist es ausspuckt:
findbugs:
[findbugs] Executing findbugs from ant task
[findbugs] Running FindBugs...
[findbugs] Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/bcel/classfile/ClassFormatException
strace
zeigt, dass es gefunden und geöffnet /usr/share/java/findbugs-bcel.jar
, so ich habe keine Ahnung, warum es nicht die Klasse laden. Das explizite Hinzufügen von /usr/share/java/findbugs-bcel.jar
zum Klassenpfad des Taskdefs ändert nichts.
HINWEIS: Ich versuche nicht, FindBugs auf BCEL auszuführen. BCEL wird von FindBugs zur Analyse verwendet, und mein eigener Code verwendet BCEL überhaupt nicht.
Findbugs verwendet es Version BCEL privat geändert own wird. Stellen Sie sicher, dass Ihr Klassenpfad den von Findbugs verwendet. – MeBigFatGuy