我正在阅读关于斯卡拉的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会导致我的工作在他们的服务器上失败。我是一个非常新的人,如果我说了一些非常愚蠢的话,抱歉。
答案 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安装不兼容,则可以显示错误消息。