Scala 通过sbt添加Joda Time时出现编译错误,但如果通过ide添加Joda Time,则运行良好?
我正在努力养成使用构建工具的习惯。然而,sbt给了我一些麻烦,我对它的了解还不足以解决问题的原因 我正在尝试将JotaTime作为依赖项添加到我的项目中 我的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。我可以导入模块,自动完成作品等。。但是,一旦我尝试实际运行项
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包装。