Scala SBT:scala编译器版本

dsg*_*dsg 12 swing scala sbt

我知道scala swing库存在于scala 2.8中:

[info] Building project chart 1.0 against Scala 2.8.1
[info]    using sbt.DefaultProject with sbt 0.7.4 and Scala 2.7.7
Run Code Online (Sandbox Code Playgroud)

那我怎么会得到这个错误:

[error] /src/main/scala/Chart.scala:2: value swing is not a member of package scala
[error] import scala.swing.Panel
Run Code Online (Sandbox Code Playgroud)

是因为SBT使用了错误版本的scala(即2.7.7)吗?如果是这样,我如何配置它以使用正确的版本?

编辑:答案

按照Dylan Lacey的回答,我做了以下文件sbt/project/build/chart.scala:

import sbt._

class SamplesProject(info: ProjectInfo) extends DefaultProject(info)
{
   val scalaSwing = "org.scala-lang" % "scala-swing" % "2.8.1"
}
Run Code Online (Sandbox Code Playgroud)

然后我跑了:sbt reload update从shell.

现在事情编译!

Jay*_*ley 15

对于sbt 0.11(可能是0.10),然后添加以下内容build.sbt将执行此操作:

libraryDependencies <+= scalaVersion { "org.scala-lang" % "scala-swing" % _ }
Run Code Online (Sandbox Code Playgroud)


Dyl*_*cey 9

不行.第2行报告的版本信息只是sbt构建的版本信息,它不会影响您的构建.

因为Swing是一个包(不是基类的一部分),我怀疑问题是两件事之一.或者:

  1. 您的构建文件未指定您要使用scala-swing并且感到困惑.您可以通过添加:

    val scalaSwing = "org.scala-lang" % "scala-swing" % "packageVersion"

    在/project/build/projectName.scala中(感谢Janx!)

  2. 您已添加了依赖性但尚未下载所需的包.为此,您需要sbt重新加载项目定义,然后获取所有必需的包:

    sbt reload update

如果您需要选项1,您可能还需要选项2.

如果这些都不起作用,你可能会对你的本地存储库造成可怕的困惑.这可以通过a修复sbt clear-lib,但您将重新下载所有包.