我正在尝试为我的项目运行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")
但仍然没有。
答案 0 :(得分:1)
在查看此插件的源代码后,我发现我必须指定findbugs类路径才能使sbt操作起作用。对于那些遇到同样问题的人来说,这就是解决方案。
findbugsClasspath := IO.listFiles(file(<your findbugs lib location>)).filter(_.getName.endsWith("jar")).toSeq.classpath
这应该在维基中明确指出。
BTW - 我相信这也可以解决cpd sbt插件的类似问题。