我正在努力养成使用构建工具的习惯。但是,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(版本2.3,就像在构建文件中一样)手动下载并添加了jota-time
库,一切正常。没有错误。一切都编译并运行。
什么会导致JodaTime的版本被sbt下载破坏?
答案 0 :(得分:3)
将此添加到您的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]了解更多信息