无法初始化编译器:找不到编译器镜像中的对象 java.lang.Object
Posted
技术标签:
【中文标题】无法初始化编译器:找不到编译器镜像中的对象 java.lang.Object【英文标题】:Failed to initialize compiler: object java.lang.Object in compiler mirror not found 【发布时间】: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 就成功了。
【参考方案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 (***.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.12
或 later
对于 2.12.x,这意味着 2.12.10
或 later
对于 2.13.x,这意味着 2.13.1
或 later
正如提到的其他答案,请确保您还使用与 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。取下拉链对我有用。
【讨论】:
以上是关于无法初始化编译器:找不到编译器镜像中的对象 java.lang.Object的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse 无法编译,提示“错误: 找不到或无法加载主类”
Eclipse 无法编译,提示“错误: 找不到或无法加载主类”
错误:找不到字段的设置器。 - java.util.ArrayList 中的大小 - Room 中的嵌入式 ArrayList 无法编译