如何更新项目中的 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 安装一起使用时,您可能会收到错误消息。
我正在 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 安装一起使用时,您可能会收到错误消息。