3

findbugs:

[findbugs] Executing findbugs from ant task
[findbugs] Running FindBugs...
[findbugs] java.lang.NoClassDefFoundError: org/apache/bcel/classfile/ClassFormtException
[findbugs] Caused by: java.lang.ClassNotFoundException: org.apache.bcel.classfile.ClassFormatException
[findbugs]     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
[findbugs]     at java.security.AccessController.doPrivileged(Native Method)
[findbugs]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[findbugs]     at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
[findbugs]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[findbugs]     at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
[findbugs] Could not find the main class: edu.umd.cs.findbugs.FindBugs2.  Program will exit.
[findbugs] Exception in thread "main"

必要なフォルダにfindbugsと重要なjarファイルを保持していましたが、antを使用してfindbugsを実行するとこの問題が発生します。

私はfindbugs1.3.2とbcel5.2を使用しています。

この問題を解決する方法は?

[findbugs] Output saved to bugs/reports/findbugs.xml
4

1 に答える 1

3

findbugsのドキュメントには、次のように記載されています。

ノート

Ant タスクは、それが含まれていたバージョンの FindBugs で使用することを強くお勧めします。Ant タスクの Jar ファイルが、それが含まれていたバージョン以外の FindBugs のバージョンで動作することは保証されません。

使用している ANT タスクのバージョンを指定しません....

次のように、 ivyのような依存関係マネージャーを使用して、複雑なクラスパスを処理することをお勧めします。

<project name="demo" default="findbugs" xmlns:ivy="antlib:org.apache.ivy.ant">

    <target name="init" description="Use ivy to manage ANT tasks">
        <ivy:cachepath pathid="findbugs.path">
            <dependency org="com.google.code.findbugs" name="findbugs-ant" rev="2.0.1" conf="default"/>
        </ivy:cachepath>

        <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" classpathref="findbugs.path"/>
    </target>

    <target name="findbugs" depends="init">
        ..
        <findbugs ..
        ..
    </target>

</project>

最後に、ソナーの使用も検討する価値があります。Sonar ANT タスクは、すべての findbugs 依存関係を管理し、checkstyle や PMD などの他のツールも実行します。

于 2012-10-06T10:59:04.700 に答える