如何更新项目中的 sbt?

How can I update sbt in project?

我正在 Coursera 上学习有关 scala 的课程,他们给我布置了作业。我下载了项目,里面有 build.sbt。我在终端、Eclipse 和 Idea 中尝试使用 sbt 命令,但没有任何效果。终端中的消息说:

[info] Compiling 8 Scala sources to /Users/(Path to project)/project/target/scala-2.9.2/sbt-0.12/classes...
[error] error while loading CharSequence, class file '/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/rt.jar(java/lang/CharSequence.class)' is broken
[error] (bad constant pool tag 18 at byte 10)
[error] error while loading Comparator, class file '/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/rt.jar(java/util/Comparator.class)' is broken
[error] (bad constant pool tag 18 at byte 20)
[error] error while loading AnnotatedElement, class file '/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/rt.jar(java/lang/reflect/AnnotatedElement.class)' is broken
[error] (bad constant pool tag 18 at byte 76)
[error] /Users/(Path to project)/project/ScalaTestRunner.scala:66: overloaded method value replace with alternatives:
[error]   (java.lang.CharSequence,java.lang.CharSequence)java.lang.String <and>
[error]   (Char,Char)java.lang.String
[error]  cannot be applied to (java.lang.String, java.lang.String)
[error]   private def runPathString(file: File) = file.getAbsolutePath().replace(" ", "\ ")
[error]                                                                  ^
[error] four errors found
[error] (compile:compile) Compilation failed

据我了解 sbt 0.12 使用 scala 2.9.2,这不能正确处理 Java 1.8。当然,降级 java 是可行的,但这不是解决方案,因为我需要 Java 1.8。我已经安装了最新的 sbt 和 scala,但我认为这个项目有他自己的 sbt 或其他东西。所以,我需要的是专门为这个项目升级 sbt 或降级 java。第二个更受欢迎,因为我担心升级 sbt 会导致我的工作在他们的服务器上失败。我是这方面的新手所以,如果我说了一些非常愚蠢的话,对不起。

呵呵,那其实很简单,只要你知道该怎么做。只需在项目目录中创建 .javaversion 文件(或更高版本,据我所知,它首先在目录树中搜索)并用 oracle64-1.7.0.76 或任何你想要的填充它。另外,there is nice plugin to make it even more easy.

sbt 使用不同版本的 Java 的另一种方法是在项目的根目录下创建一个 .sbtopts 文件,其中包含:

-java-home
/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home

无论您的 Java 7 版本是什么。 注意:必须分行。

可能会对某些人有所帮助,您也可以将 scalaVersion := "2.11.6" 添加到您的 build.sbt。未经我测试,但在官方文档中有说明 here.

您可能需要查看的另一个目录是项目目录。在那里你可能会找到指定 sbt 和 Scala 版本的 build.properites 文件。当它的旧版本不能很好地与较新的 Java 安装一起使用时,您可能会收到错误消息。