【问题标题】:cannot launch findbugs appropriately through sbt无法通过 sbt 正确启动 findbugs
【发布时间】:2013-09-15 23:48:33
【问题描述】:

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

但还是不行。

【问题讨论】:

    标签: scala sbt classnotfoundexception findbugs


    【解决方案1】:

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

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

    这应该在 wiki 中明确指出。

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

    【讨论】:

      猜你喜欢
      • 2014-12-13
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多