2016-07-19 63 views
0

我的SBT编译在编译时失败。 我有以下build.sbt由于找不到scala jar dependecies而导致SBT编译失败

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

而且我确实有这个:

~\.sbt\boot\scala-2.10.6 

所以显然我有斯卡拉正确版本的安装我的SBT。我的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构建不拿起斯卡拉库。

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

什么可能会出错?

回答

0

您需要验证Scala版本,您实际上包含了特定的东西,您在x.class中引用的东西。没有这个代码,我不能说你想要利用什么,但是使用scala.util.Properties.scalaPropOrElse("version.number", "unknown")来确定哪个版本的Scala是实际上是被使用。使用println或日志记录来输出该调用的结果。

然后将该版本号引用到Scala API并确认您要拨打的电话号码实际上是。没有更多的信息,我无法直接回答你。但是你需要确认你的运行时代码使用的Scala版本确实包含了你正在尝试引用的对象或类。

请注意,只需在.sbt目录中拥有一个Scala目录并不能保证它正在使用该版本。为了验证SBT斯卡拉版本,把这个在你build.sbt文件的底部:

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

这将显示什么斯卡拉版本你实际使用的SBT文件。这可能不一定是.sbt中的2.10.6

+0

当我动态下载依赖关系时,它工作正常。我想把所有的静态依赖放在一个lib文件夹下是一个挑战。 –

+0

也许我错过了一些东西:特别是需要下载哪些依赖来解决您的问题?你可以有一些托管和一些非托管的依赖关系。前者更容易处理。 –

+0

我得到的问题是在编译期间没有找到包scala.reflect。 在我的lib文件夹中,我有一些需要scala库的jar。我认为,因为scala库是scala安装的一部分,所以编译任务总会找到它们。 当这没有工作,我只是使用libraryDependencies来下载我的依赖关系,它下载所有和编译工作正常。 我仍然认为,如果你需要提供静态依赖关系,编译任务应该至少找到scala的,而不是让我们将它们添加到lib文件夹。 –

相关问题