我正在努力养成使用构建工具的习惯。然而,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-Convert 在 Scala 中工作,不要问我为什么,它就是这样。
看[ here ] 了解更多信息
关于scala - 通过 sbt 添加 Joda-Time 时出现编译错误,但如果我通过 ide 添加它则运行正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24598115/