当前位置: 首页>>技术教程>>正文


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

,

问题描述

在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的情况下,打开REPL时scala失败:

$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 8版本的OpenJDK为我解决了此问题。

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

次佳回答

这个问题似乎与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

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

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

ls /Library/Java/JavaVirtualMachines/

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

编辑:

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

第三种回答

安装Java版本”1.8.0_144″为我解决了此问题。我以前安装了jdk 1.9。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9155.html,未经允许,请勿转载。