【发布时间】:2014-02-15 09:25:09
【问题描述】:
我安装了 Fedora 20 findbugs RPM,然后设置了我的 Ant build.xml 文件:
<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>
这给了我错误:
java.lang.IllegalArgumentException:在 /usr/share/findbugs/lib 中找不到 findbugs.jar
所以我将/usr/share/findbugs/lib 设为/usr/share/java 的符号链接,findbugs.jar 所在的位置。这让我更进一步,但现在它吐出来了:
findbugs:
[findbugs] Executing findbugs from ant task
[findbugs] Running FindBugs...
[findbugs] Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/bcel/classfile/ClassFormatException
strace 显示它找到并打开了/usr/share/java/findbugs-bcel.jar,所以我不知道为什么它无法加载类。将 /usr/share/java/findbugs-bcel.jar 显式添加到 taskdef 的类路径不会改变任何内容。
注意:我不想在 BCEL 上运行 FindBugs。 FindBugs使用BCEL来做分析,我自己的代码根本没有使用BCEL。
【问题讨论】:
-
Findbugs 使用它自己的私人修改版本的 BCEL。确保您的类路径使用 Findbugs 中的路径。
标签: java linux ant fedora findbugs