我知道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)
不行.第2行报告的版本信息只是sbt构建的版本信息,它不会影响您的构建.
因为Swing是一个包(不是基类的一部分),我怀疑问题是两件事之一.或者:
您的构建文件未指定您要使用scala-swing并且感到困惑.您可以通过添加:
val scalaSwing = "org.scala-lang" % "scala-swing" % "packageVersion"
在/project/build/projectName.scala中(感谢Janx!)
您已添加了依赖性但尚未下载所需的包.为此,您需要sbt重新加载项目定义,然后获取所有必需的包:
sbt reload update
如果您需要选项1,您可能还需要选项2.
如果这些都不起作用,你可能会对你的本地存储库造成可怕的困惑.这可以通过a修复sbt clear-lib
,但您将重新下载所有包.