【问题标题】:How can I update sbt in project?如何在项目中更新 sbt?
【发布时间】:2015-07-20 00:48:26
【问题描述】:

我正在 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 会导致我的工作在他们的服务器上失败。我是这方面的新手,所以如果我说了一些非常愚蠢的话,对不起。

【问题讨论】:

标签: sbt


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 效果很好,但我的回答更适合我,因为我可以将 Java 1.7 默认设置为存储任务的整个目录。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-11
        • 2012-02-10
        • 2019-07-17
        • 2021-09-08
        • 2013-12-29
        • 2017-03-22
        • 2012-07-24
        • 1970-01-01
        相关资源
        最近更新 更多