scala - 面向 future 的 Scala/SBT 项目

标签 scala sbt

我正在尝试在同一个程序中使用 scala-graph 和 scala-swing。我可以将最新的图形核心库 (1.9.2) 与最新版本的 scala (2.11.6) 单独使用。我可以使用 scala-swing,但是当我这样做时,sbt 给我 Scala 2.10.4 而不是 2.11.6。

当我尝试使用这两个库时,我遇到了错误——要么是编译错误,要么是运行时错误,这取决于我如何设置 build.sbt。所以我尝试使用旧版本的 graph-core (1.8.0),如果我正确理解库的发布历史 [1],它是为 Scala 2.10 设计的。

这样做是可行的,尽管它会导致 sbt 使用 scala 2.10.4 而不是 2.11.6。我很担心,因为这似乎是一个脆弱的安排。

它会继续工作吗?目前我的 build.sbt 文件(如下)不限制 scalaVersion 或 scala-compiler 版本;它只是说明要使用哪个图形和 swing 库。恐怕对图形库、swing 库或 scala 语言本身的更改会破坏代码。

[这篇文章的其余部分描述了我的操作系统、安装和代码;您可能不需要阅读它。]

我正在使用 Ubuntu 14.04。我使用 apt-get 安装了 scala 和 sbt。 swing 似乎已经安装在我的机器上。我没有安装图形库,但 sbt 似乎会处理它。

我仅有的两个文件在同一文件夹中:build.sbt 和 main.scala。 build.sbt 看起来像这样:

lazy val root = (project in file(".")).
    settings(
        name := "main",
        version := "1.0",
        libraryDependencies += "org.scala-lang" % "scala-swing" % "2.10.5",
        libraryDependencies += "com.assembla.scala-incubator" %% "graph-core" % "1.8.0"
    )

main.scala 看起来像这样:

import scalax.collection.Graph // or scalax.collection.mutable.Graph
import scalax.collection.GraphPredef._, scalax.collection.GraphEdge._
import scala.swing._, scala.swing.event._

object App extends SimpleSwingApplication {
    def top = new MainFrame {
        val g1 = Graph(3~1, 5) // no effect; just tests the constructor
        val button = new Button { text = "Click me" }
        contents = new BoxPanel(Orientation.Vertical) {
            contents += button
            border = Swing.EmptyBorder(30, 30, 10, 30)
        }
    }
} 

谢谢。

[1] http://www.scala-graph.org/download/

最佳答案

首先,您需要为 2.11 使用 "org.scala-lang.modules"%% "scala-swing"% "1.0.1"

I'm afraid that changes to the graph library, or the swing library, or the scala language itself, will break the code.

因为你有两个库的特定固定版本,新版本的发布不会影响它;但我当然会推荐包括 scalaVersion 无论如何。请特别注意 %% 的效果取决于您的 scalaVersion 是什么。

关于scala - 面向 future 的 Scala/SBT 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29813574/

相关文章:

java - 如何在 Java 8 (Scala) 中将日期时间字符串转换为长(UNIX 纪元时间)毫秒

java - 在键和值中转义 JSON 的双引号?

scala - 在 Spark Scala 中使用滞后函数从另一列中获取值

java - Scala sbt 构建因 javafx 失败

maven - 使用来自 maven 的 sbt

scala - 如何在 IntelliJ 13 中调试 Scala SBT 项目?

尝试加载 opencv 时出现 java.lang.UnsatisfiedLinkError

azure - 如何设置 Spark Kusto 连接器写入轮询间隔?

java - 谁能给我推荐一个好的库来在 java/scala 中应用机器学习?

scala - 使用具有代码覆盖率的 Scala SBT 时出现兼容性错误