【发布时间】:2021-07-21 05:41:51
【问题描述】:
我正在使用sbt 插件对我的代码进行一些样式检查:https://github.com/sksamuel/sbt-scapegoat。在我的一个项目中,我们称之为 my-app,我将 sbt 插件添加到项目目录内的 plugins.sbt 文件中。
该工具运行良好,一切似乎都按预期工作。这个插件有一个编译器标志,允许传入自定义检查。
因此我创建了另一个项目my-inspections,在其中我使用与sbt 插件相同的类添加了一个自定义检查。然后我将 my-inspections 添加为 my-app 中的非托管 jar。我通过在我的 plugins.sbt 文件中添加以下行来做到这一点:
unmanagedJars in Compile += {
Attributed.blank(file("lib/my-inspections.jar"))
}
现在,当我尝试使用在 my-inspections 中添加的自定义检查类并将其传递给提供的编译器标志时,我收到一条错误消息,指出它找不到该类。我传入了我添加的自定义检查的完全限定类名。 sbt 插件然后执行以下操作:
Class.forName(inspection).getConstructor().newInstance().asInstanceOf[Inspection]
这会导致ClassNotFoundException。
sbt 插件如何成功加载我创建的具有自定义检查的Class?
【问题讨论】: