【问题标题】:Scala SBT throwing IncompatibleClassChangeError exceptionScala SBT 抛出 IncompatibleClassChangeError 异常
【发布时间】: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",但删除它并没有帮助。另外,我已经在另一台机器上测试了这个设置,没有问题。

标签: java scala sbt


【解决方案1】:

从您的 Java 扩展目录中删除所有无关的 JAR 文件。在构建 BFG Repo-Cleaner 然后将生成的 bfg.jar 安装到 macOS 下的 /Library/Java/Extensions 后,我遇到了同样的错误。之后,sbt 失败并显示上述错误消息,直到 bfg.jar/Library/Java/Extensions 中删除。

【讨论】:

  • 感谢您的意见!不幸的是我没有这个问题了,所以我无法验证。不过谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-01-19
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 2014-04-12
  • 2018-10-18
相关资源
最近更新 更多