【发布时间】:2016-02-21 19:35:46
【问题描述】:
我尝试为 Scala 安装 SBT,但在启动时出现了这个奇怪的异常:
Exception in thread "main" java.lang.IncompatibleClassChangeError: Expected static method scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps;
at xsbt.boot.Boot$.main(Boot.scala:11)
at xsbt.boot.Boot.main(Boot.scala)
我的 Java 版本是
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
我通过 (home)brew 安装了 SBT 并获得了 0.13.9 版本。
我尝试将 Java 更新到最新版本,但没有帮助。 当然,我已经卸载并重新安装了 SBT,无论是否使用自制软件,但我得到了同样的错误。我不知道为什么会出现这个错误。
【问题讨论】:
-
IncompatibleClassChangeError表示二进制不兼容问题。您正在运行哪个版本的 Scala?你是如何开始 sbt 的?你是在一个特定的项目上开始 sbt 吗? -
您可以尝试 PaulP 的 sbt 'rebel cut' 脚本:github.com/paulp/sbt-extras - 只需将该文件保存在某处,然后直接作为 shell 脚本而不是原始 sbt 运行。
-
@moem 我在
Scala version 2.11.7。我通过在命令行上运行$ sbt来运行 SBT。在特定项目上启动 SBT 并且不这样做时,错误是相同的。 @0__ 感谢您的建议,我试过了,但它产生了与提到的相同的错误。 -
你在做些什么来改变 sbt 的 scala 版本吗?只有 2.10 可以用来运行 sbt。特别是,在任何情况下都不能在任何
project/*.sbt文件中设置scalaVersion -
@pfn 我的 *.sbt 文件确实设置了
scalaVersion := "2.11.7",但删除它并没有帮助。另外,我已经在另一台机器上测试了这个设置,没有问题。