我的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
下载它们。
可能出现什么问题?
答案 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
。