不能通过sbt适当地启动findbugs

时间:2013-09-11 19:44:22

标签: scala sbt classnotfoundexception findbugs

我正在尝试为我的项目运行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")

但仍然没有。

1 个答案:

答案 0 :(得分:1)

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

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

这应该在维基中明确指出。

BTW - 我相信这也可以解决cpd sbt插件的类似问题。