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

object time is not a member of package org.joda

我正在学习 scala 遵循这个 tutorial 和 docker 图片 hseeberger/scala-sbt

第一个版本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 中将 , 替换为 ;,因为 , 会导致错误。

这个命令来自这个

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]        ^

有什么想法吗?

问题是这样的:

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"
)

特别注意:

the only difference from that tutorial is that I replaced , with ; in the build.sbt as , causes error.

;, 在 Scala 中具有完全不同的含义并且不可互换。如果您发现自己需要进行更换,您应该停下来检查一下您在做什么。