【问题标题】:Scala SBT: scala compiler versionScala SBT:Scala 编译器版本
【发布时间】:2011-10-14 18:31:34
【问题描述】:

我知道 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

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

[error] /src/main/scala/Chart.scala:2: value swing is not a member of package scala
[error] import scala.swing.Panel

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

编辑:回答

Dylan Lacey's answer之后,我制作了以下文件sbt/project/build/chart.scala

import sbt._

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

然后我从 shell 运行:sbt reload update

现在一切都编译好了!

【问题讨论】:

  • Scala 版本在 project/build.properties 中配置。干杯!
  • Scala Swing 没有在 Scala 2.8 上引入。有一些改进,但它在早期版本中可用。

标签: swing scala sbt


【解决方案1】:

对于 sbt 0.11(大概是 0.10),然后将以下内容添加到 build.sbt 即可:

libraryDependencies <+= scalaVersion { "org.scala-lang" % "scala-swing" % _ }

【讨论】:

    【解决方案2】:

    没有。第 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。

    如果这些都不起作用,您可能已经严重混淆了本地存储库。这可以通过sbt clear-lib 解决,但您需要重新下载所有包。

    【讨论】:

    • 我可能需要这样做。 val scalaSwing = ... 行在哪里?
    • 您可能想查看 SBT 文档,但配置依赖项的一种方法是在 project/build/Project.scala 您需要导入 sbt._ 并扩展正确的类 - 请参阅示例的 SBT 文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多