如何更新项目中的sbt?

时间:2015-05-09 01:41:18

标签: sbt

我正在阅读关于斯卡拉的Coursera课程,他们有我的任务。我下载了项目,其中有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会导致我的工作在他们的服务器上失败。我是一个非常新的人,如果我说了一些非常愚蠢的话,抱歉。

4 个答案:

答案 0 :(得分:1)

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

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

无论你的Java 7版本是什么。 注意:必须在不同的行上。

答案 1 :(得分:0)

嘿,如果你知道该怎么做,那实际上很容易。只需在项目目录中创建.javaversion文件(或者上面,据我所知,它首先在目录树中搜索)并用oracle64-1.7.0.76或任何你想要的填充它。另外,there is nice plugin to make it even more easy

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您可能需要查看的另一个目录是项目目录。在那里,您可能会找到build.properites文件,该文件指定了sbt和Scala的版本。如果旧版本与较新的Java安装不兼容,则可以显示错误消息。