【发布时间】:2011-08-27 18:27:37
【问题描述】:
我对 SBT 子项目有一个奇怪的问题,我认为这与依赖关系有关。这是我的设置:
- 我有一个包含两个子项目 A 和 B 的 SBT 项目。
- A 包含一个类和伴随对象
MyA - B 依赖于 A。
- B 包含一个对象
MyB,它有一个main 方法。
当我尝试从 SBT 提示符执行 MyB 时,我在 MyA 上得到一个 NoSuchMethodError。这不是ClassNotFoundException,但可能是因为它在类路径上看到MyA 类,但看不到MyA 对象。
作为健全性检查,我删除了 B 子项目并将其源代码移到 A 源代码树中。当我从 SBT 提示符运行 MyB 时,它按预期工作。
有没有人遇到过这种情况,或者我做错了什么?
这是我的项目配置:
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)
}
【问题讨论】:
-
更新:这似乎是一个编译错误。我编译了一个组合的A + B源树,然后只将B类复制到
b/target/...目录中,MyB运行正常。
标签: scala dependencies sbt