首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面向未来的Scala/SBT项目

面向未来的Scala/SBT项目
EN

Stack Overflow用户
提问于 2015-04-23 12:17:28
回答 1查看 206关注 0票数 2

我尝试在同一个程序中使用scala-graph和scala-swing。我可以单独使用最新的图形核心库(1.9.2)和最新版本的scala (2.11.6)。我可以使用scala-swing,但是当我使用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编译器的版本;它只是说明要使用哪个图形和swing库。我担心对图形库、swing库或scala语言本身的更改会破坏代码。

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

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

我只有两个文件在同一个文件夹中: build.sbt和main.scala。build.sbt如下所示:

代码语言:javascript
复制
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看起来像这样:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2015-04-23 13:02:48

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

我担心对图形库、swing库或Scala语言本身的更改会破坏代码。

由于这两个库都有特定的修复版本,因此新版本的发布不会对其产生影响;但无论如何,我都会建议您包含scalaVersion。特别要注意的是,%%的效果取决于您的scalaVersion

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29813574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档