【发布时间】:2015-07-01 01:20:35
【问题描述】:
我正在尝试在同一个程序中使用 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 库或 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)
}
}
}
谢谢。
【问题讨论】: