由于没有找到scala jar dependecies,SBT构建失败

时间:2016-07-19 13:57:49

标签: sbt

我的SBT构建在编译时失败了。 我有以下build.sbt

name := "Tetst Advice Project"
version := "1.0"
scalaVersion := "2.10.6"

我确实有这个:

~\.sbt\boot\scala-2.10.6

很明显,我为我的SBT安装了正确版本的Scala。 我的SBT版本为0.13

当它尝试编译代码时,我收到此错误:

[error] bad symbolic reference. A signature in [x].class refers to term runtime
[error] in package scala.reflect which is not available.

在我看来,SBT构建并没有占用Scala库。

请注意,我的所有依赖项都放在lib文件夹下,我没有使用libraryDependencies下载它们。

可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

您需要验证您实际包含x.class中引用的特定内容的Scala版本。如果没有该代码,我就无法说出您要使用的内容,而是使用scala.util.Properties.scalaPropOrElse("version.number", "unknown")来确定哪些版本的Scala 实际正在使用。使用println或您的日志记录输出该调用的结果。

然后将该版本号引用到Scala API,并验证您所调用的内容实际上。没有更多信息,我无法直接回答这个问题。但是您需要肯定地确认运行时代码使用的Scala版本确实包含您尝试在文件中引用的对象或类。

请注意,在.sbt目录中只有一个Scala目录并不能保证它正在使用该版本。要验证SBT scala版本,请将其放在build.sbt文件的底部:

val x = {
  println("Scala version: " + scala.util.Properties.scalaPropOrElse("version.number", "unknown") )
  Seq("")
}

这将显示您在SBT文件中实际使用的Scala版本。这可能不一定是2.10.6中的.sbt