【问题标题】:Failed to initialize compiler: object java.lang.Object in compiler mirror not found无法初始化编译器:找不到编译器镜像中的对象 java.lang.Object
【发布时间】:2016-11-30 20:52:22
【问题描述】:

在 Ubuntu 16.04 上,我安装了scala

$ls ~/Binary/scala-2.11.8
bin  doc  lib  man
$grep -A 2 SCALA ~/.bashrc
SCALA=~/Binary/scala-2.11.8
SBT=~/Binary/sbt
export PATH=$PATH:$SCALA/bin:$SBT/bin

安装openjdk8 后,scala 在打开 REPL 时失败:

$javac -version
javac 1.8.0_91
$ 
$scala
Welcome to Scala 2.11.8 (OpenJDK 64-Bit Server VM, Java 9-internal).
Type in expressions for evaluation. Or try :help.
scala> 
Failed to initialize compiler: object java.lang.Object in compiler mirror not found.
** Note that as of 2.8 scala does not assume use of the java classpath.
** For the old behavior pass -usejavacp to scala, or if using a Settings
** object programmatically, settings.usejavacp.value = true.

Failed to initialize compiler: object java.lang.Object in compiler mirror not found.
** Note that as of 2.8 scala does not assume use of the java classpath.
** For the old behavior pass -usejavacp to scala, or if using a Settings
** object programmatically, settings.usejavacp.value = true.

我该如何解决?

【问题讨论】:

  • 你机器的JAVA_HOME值是多少?
  • 未设置。但是,我通过 sudo update-alternatives --config javac 修复它以使用 openjdk-8 而不是 /usr/lib/jvm/java-9-openjdk-amd64/bin/java
  • 设置 JAVA_HOME 是否消除了错误?
  • 在我的机器上设置 JAVA_HOME 删除了错误
  • 我遇到了同样的问题,将 java 版本更改为 8 就成功了。

标签: scala ubuntu


【解决方案1】:

使用 Java 8 版本的 OpenJDK 为我解决了这个问题。

sudo update-alternatives --config java
sudo update-alternatives --config javac

【讨论】:

  • 使用 brew 在 osx 上安装特定的 java 版本:lonecpluspluscoder.com/2017/10/08/…
  • 非常有帮助的答案!
  • 这是一个 linux 问题,但如果您在 Mac 上遇到此问题,请按照这些说明在您的系统中安装 Java8 (stackoverflow.com/questions/24342886/…),并相应地设置您的新 JAVA_HOME(请参阅@Dbz在下面回答)。
  • 我使用的是 Java 10,降级到 OpenJDK 版本 8 确实有效!但是,我还必须将 JAVA_HOME 环境变量更新到正确的文件夹才能工作,以防万一有人也需要这样做。
  • 在 Ubuntu 上使用 Java 8 版本对我有用,无需任何进一步的更改。很好的答案
【解决方案2】:

Java 8 已被弃用,因此降级到 is 绝不能成为可接受的解决方案。

正确的解决方案是将您的 SBT 升级到 0.13.17 或更高版本。

【讨论】:

  • 其他 8 个答案中唯一正确的答案,零赞!
【解决方案3】:

这个问题似乎与 Java 9 相关,并在 Java 8 中得到解决。

如果您有 Java 8 和 Java 9,并且希望同时保留这两个版本,则可以将环境变量 JAVA_HOME 设置为 Java 8 路径。

例如:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home

您需要将 jdk1.8.0_161.jdk 替换为您拥有的任何版本的 JDK。

您可以通过以下方式找到该版本:

ls /Library/Java/JavaVirtualMachines/

设置环境变量后,您可以打开一个新终端并运行java -version 以查看版本设置是否正确。

编辑:

值得注意的是,我有一台 Mac,尽管这是一个 linux 问题。

【讨论】:

    【解决方案4】:

    安装 java 版本“1.8.0_144”为我解决了这个问题。我之前安装过 jdk 1.9。

    【讨论】:

      【解决方案5】:

      如果您使用的是与 JDK 8 以上不兼容的旧版 Scala,请update to a newer version that's compatible with JDK 11。 JDK 11 是当前的 LTS。

      次要版本:

      • 对于 2.11.x,这意味着 2.11.12later
      • 对于 2.12.x,这意味着 2.12.10later
      • 对于 2.13.x,这意味着 2.13.1later

      正如提到的其他答案,请确保您还使用与 JDK >8 兼容的构建工具(例如 sbt 大于 0.13.17)。

      【讨论】:

        【解决方案6】:

        安装 Java 8 解决了这个问题。

        我下载了 java 8 并将其提取到以下位置:/usr/lib/jvm/jdk1.8.0_172

        完成此操作后,将 JAVA_HOME 路径更新为相同:/usr/lib/jvm/jdk1.8.0_172

        这将解决问题。

        【讨论】:

          【解决方案7】:

          使用此 java 版本“1.8.0_144”

          卸载java和apache-spark

          安装java,安装apache-spark

          【讨论】:

            【解决方案8】:

            我遇到了同样的问题。卸载 Java 9

            sudo rm -fr /Library/Java/JavaVirtualMachines/jdk-9.jdk/
            sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
            sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefPane
            

            参考:https://gist.github.com/schnell18/bcb9833f725be22f6acd01f94b486392

            安装 Java 8。

            现在一切似乎都很好。

            顺便说一句:这是为 mac 准备的。可能对你有用。

            【讨论】:

              【解决方案9】:

              我在同一位置有我的 jdk 的 zip。取下拉链对我有用。

              【讨论】:

                猜你喜欢
                • 2020-04-14
                • 2018-03-09
                • 2017-02-09
                • 2015-03-12
                • 1970-01-01
                • 1970-01-01
                • 2021-07-31
                • 1970-01-01
                相关资源
                最近更新 更多