Scala 通过sbt添加Joda Time时出现编译错误,但如果通过ide添加Joda Time,则运行良好?

Scala 通过sbt添加Joda Time时出现编译错误,但如果通过ide添加Joda Time,则运行良好?,scala,sbt,Scala,Sbt,我正在努力养成使用构建工具的习惯。然而,sbt给了我一些麻烦,我对它的了解还不足以解决问题的原因 我正在尝试将JotaTime作为依赖项添加到我的项目中 我的build.sbt的完整外观如下: name := "MyProject" libraryDependencies += "joda-time" % "joda-time" % "2.3" 现在,它似乎找到了库并完成了更新,没有问题。我可以在IDE中开始使用joda time。我可以导入模块,自动完成作品等。。但是,一旦我尝试实际运行项

我正在努力养成使用构建工具的习惯。然而,sbt给了我一些麻烦,我对它的了解还不足以解决问题的原因

我正在尝试将JotaTime作为依赖项添加到我的项目中

我的
build.sbt
的完整外观如下:

name := "MyProject"

libraryDependencies += "joda-time" % "joda-time" % "2.3"
现在,它似乎找到了库并完成了更新,没有问题。我可以在IDE中开始使用joda time。我可以导入模块,自动完成作品等。。但是,一旦我尝试实际运行项目,就会出现以下错误:

Error:scalac: error while loading LocalDateTime, class file 'C:\Users\myname\.ivy2\cache\joda-time\joda-time\jars\joda-time-2.3.jar(org/joda/time/LocalDateTime.class)' is broken
(class java.lang.RuntimeException/bad constant pool tag 10 at byte 42)
所讨论的确切代码如下:

def main(args: List[String]) = {
    println(new LocalDateTime(System.currentTimeMillis))
}
试着解决一下这个问题。我从
build.sbt
中删除了依赖项行,而是通过我的IDE手动下载并添加了
jota time
库(版本2.3,与构建文件中一样),一切正常。没有错误。一切都在编译和运行


是什么导致sbt下载的JodaTime版本被破坏

将此添加到build.sbt中:

libraryDependencies += "org.joda" % "joda-convert" % "1.6"
或者写下:

libraryDependencies ++= Seq( "joda-time" % "joda-time"    % "2.3"
                           , "org.joda"  % "joda-convert" % "1.6"
                           )
无论哪种风格由你决定,但这应该会解决它

Joda Time要求Joda转换到Scala工作,别问我为什么,它就是这样


查看[]了解更多信息

顺便说一句,使用Maven Scala插件时可能会出现相同的重复。您可以在文档
Joda Time uses annotations from Joda Convert中找到解释。在Java编程语言中,此依赖项是可选的,但在Scala中不是。Scala用户必须手动添加Joda Convert v1.2依赖项。
@adjablon这就是我忘记推荐的原因,而不是直接使用JodaTime尝试使用nscala time()。这是Scala非常好的JodaTime包装。