3

我正在尝试为我的项目运行 findbugs-sbt 插件(https://bitbucket.org/jmhofer/findbugs4sbt/wiki/Home)。但是,当我尝试在 sbt 控制台中运行 findbugs 时出现此错误

[error] Exception in thread "main" java.lang.NoClassDefFoundError: edu/umd/cs/findbugs/LaunchAppropriateUI
[error] Caused by: java.lang.ClassNotFoundException: edu.umd.cs.findbugs.LaunchAppropriateUI
[error]         at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
[error]         at java.security.AccessController.doPrivileged(Native Method)
[error]         at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[error]         at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
[error]         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[error]         at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
[error] Could not find the main class: edu.umd.cs.findbugs.LaunchAppropriateUI.  Program will exit.

在 project/Build.scala 中,我只是按照他们的 wiki 中的描述包含了这个

import de.johoop.findbugs4sbt.FindBugs._

lazy val foo = Project(..., settings = ... ++ findbugsSettings)

在 project/plugins.sbt 中,我添加了这个

addSbtPlugin("de.johoop" % "findbugs4sbt" % "1.2.0") // because I am using sbt 0.12

我试图在 project/plugins.sbt 中添加 findbugs 依赖项

libraryDependencies ++= Seq(
  "com.google.code.findbugs" % "findbugs" % "2.0.1")

但还是不行。

4

1 回答 1

1

在查看了这个插件的源代码后,我发现我必须指定 findbugs 类路径才能使 sbt 操作起作用。对于那些遇到同样问题的人,这里是解决方案。

findbugsClasspath := IO.listFiles(file(<your findbugs lib location>)).filter(_.getName.endsWith("jar")).toSeq.classpath

这应该在wiki中明确指出。

顺便说一句 - 我相信这也可以解决 cpd sbt 插件的类似问题。

于 2013-09-11T21:48:02.027 回答