我正在学习使用scalar镜像hseeberger / scala-sbt跟tutorial一起使用Scala
使用build.sbt的第一版
libraryDependencies += "joda-time" % "joda-time" % "2.10.2"
一切正常。
这段代码(snippet_1)
import org.joda.time._
var dt = new DateTime
得到我想要的东西。
带有第二个版本的build.sbt
libraryDependencies ++= Seq{
"joda-time" % "joda-time" % "2.10.2";
"org.joda" % "joda-convert" % "2.2.1"
}
snippet_1出现此错误
<console>:7: error: object time is not a member of package org.joda
import org.joda.time._
^
与tutorial的唯一区别在于,我在build.sbt中将,
替换为;
,因为,
会导致错误。
此命令来自此post
sbt eclipse
导致此错误
[warn] Executing in batch mode.
[warn] For better performance, hit [ENTER] to switch to interactive mode, or
[warn] consider launching sbt without any commands, or explicitly passing 'shell'
[info] Loading project definition from /root/project
[info] Set current project to root (in build file:/root/)
[error] Not a valid command: eclipse (similar: help, alias)
[error] Not a valid project ID: eclipse
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: eclipse (similar: deliver, licenses, clean)
[error] eclipse
[error] ^
有什么想法吗?
答案 0 :(得分:4)
问题是这样的:
Seq{
"joda-time" % "joda-time" % "2.10.2";
"org.joda" % "joda-convert" % "2.2.1"
}
括号括起来表示您正在以代码块的形式传递Seq
一个参数。代码块的值始终是该块中最后一行的值-在这种情况下为"org.joda" % "joda-convert" % "2.2.1"
。从未添加joda-time
依赖项。
您可以通过使用方括号和逗号为Seq
提供多个参数来解决此问题:
Seq(
"joda-time" % "joda-time" % "2.10.2",
"org.joda" % "joda-convert" % "2.2.1"
)
特别注意:
与该教程的唯一区别是我用替换了;在build.sbt中为,会导致错误。
;
和,
在Scala中具有完全不同的含义,并且不能互换。如果您发现自己需要进行更换,则应该停下来检查一下自己在做什么。