无法初始化编译器:找不到编译器镜像中的对象java.lang.Object

时间:2016-07-27 02:47:52

标签: scala ubuntu

在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.

我该如何解决?

9 个答案:

答案 0 :(得分:27)

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

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

答案 1 :(得分:7)

这个问题似乎与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以查看版本是否设置正确。

编辑:

值得注意的是,即使这是一个Linux问题,我也有Mac。

答案 2 :(得分:5)

不推荐使用Java 8,因此降级到绝不能是可接受的解决方案。

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

答案 3 :(得分:4)

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

答案 4 :(得分:1)

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

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

执行此更新后,将JAVA_HOME路径更新为:/usr/lib/jvm/jdk1.8.0_172

这将解决问题。

答案 5 :(得分:0)

使用此java版本" 1.8.0_144"

卸载java和apache-spark

安装java,安装apache-spark

答案 6 :(得分:0)

我遇到了同样的问题。卸载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。可能对你有用。

答案 7 :(得分:0)

我在同一位置放了我的jdk拉链。删除拉链对我来说很成功。

答案 8 :(得分:-1)

如果您遇到此问题的Java 9,请将其卸载并安装Java 8。