对象时间不是org.joda软件包的成员

时间:2019-06-20 11:33:46

标签: scala sbt curly-braces

我正在学习使用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]        ^

有什么想法吗?

1 个答案:

答案 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中具有完全不同的含义,并且不能互换。如果您发现自己需要进行更换,则应该停下来检查一下自己在做什么。