我在 SBT 子项目上遇到了一个奇怪的问题,我认为这与依赖关系有关。这是我的设置:
- 我有一个 SBT 项目,有两个子项目 A 和 B。
- A 包含一个类和伴生对象
MyA
- B 取决于 A。
- B 包含一个对象
MyB
其中有一个主要方法。
当我尝试执行时MyB
从 SBT 提示符中,我得到一个NoSuchMethodError
on MyA
。这不是一个ClassNotFoundException
,但也许它正在发生,因为它看到了MyA
类路径上的类,但不是MyA
object.
作为健全性检查,我删除了 B 子项目并将其源代码移至 A 源代码树中。当我跑步时MyB
从 SBT 提示来看,它按预期工作。
有没有人遇到过这个,或者我做错了什么明显的事情?
这是我的项目配置:
class MyProject(info: ProjectInfo) extends ParentProject(info) {
lazy val a = project("a", "a", new AProject(_))
lazy val b = project("b", "b", new BProject(_), a)
object Dependencies {
lazy val scalaTest = "org.scalatest" % "scalatest_2.9.0" % "1.4.1" % "test"
}
class AProject(info: ProjectInfo) extends DefaultProject(info) with AutoCompilerPlugins {
val scalaTest = Dependencies.scalaTest
val continuationsPlugin = compilerPlugin("org.scala-lang.plugins" % "continuations" % "2.9.0")
override def compileOptions = super.compileOptions ++ compileOptions("-P:continuations:enable") ++ compileOptions("-unchecked")
}
class BProject(info: ProjectInfo) extends DefaultProject(info)
}
事实证明,在项目 B 上启用延续插件时出现问题。这是我的工作配置:
class MyProject(info: ProjectInfo) extends ParentProject(info) {
lazy val a = project("a", "a", new AProject(_))
lazy val b = project("b", "b", new BProject(_), a)
object Dependencies {
lazy val scalaTest = "org.scalatest" % "scalatest_2.9.0" % "1.4.1" % "test"
}
class AProject(info: ProjectInfo) extends DefaultProject(info) with AutoCompilerPlugins {
val scalaTest = Dependencies.scalaTest
val continuationsPlugin = compilerPlugin("org.scala-lang.plugins" % "continuations" % "2.9.0")
override def compileOptions = super.compileOptions ++ compileOptions("-P:continuations:enable") ++ compileOptions("-unchecked")
}
class BProject(info: ProjectInfo) extends DefaultProject(info) with AutoCompilerPlugins {
override def compileOptions = super.compileOptions ++ compileOptions("-P:continuations:enable") ++ compileOptions("-unchecked")
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)