我的 Linux 服务器上安装了多个 Java 版本,位于
/usr/local/java/jdk1.8.0_131 (this is the correct version)
/usr/local/java/jdk1.7.0_79
/usr/local/java/jdk1.8.0_171
我正在使用
sparklyr
包连接到 Spark 集群,但是当我启动 Rstudio 并使用 Sparklyr 进行连接时,它失败并告诉我 Java 版本不正确。命令 Sys.getenv("JAVA_HOME")
仅返回 '' ;我使用Sys.setenv(JAVA_HOME = '/usr/local/java/jdk1.8.0_131')
后,一切正常。
但奇怪的是我已经在我的
JAVA_HOME = /usr/local/java/jdk1.8.0_131
中设置了/etc/profile
(否则即使我尝试在bash中启动spark我也会失败)
那么这里的问题是,当我们在 Linux 上启动 Rstudio 时,默认情况下它会定位到哪里作为默认的 Java 执行位置?我们如何更改它(我不想每次开始新的 R 会话时都更改它)。
仅供参考:
alternatives --display java
时,它给了我
jdk1.7.0_79版本,这是错误的版本,我认为可能是Rstudio中的R会话也在使用这个版本。但这只是猜测,并未得到证实。Sys.getenv('JAVA_HOME')
为我提供了正确的路径。所以只有在
Rstudio,设置不正确/或未设置。它是一个系统环境变量。
~$ echo $JAVA_HOME
/usr/local/jdk-21
如果 RStudio 上由于某种原因为空(我的情况也是如此),请添加一行
$JAVA_HOME
,然后重新启动 RStudio。
~$ echo "JAVA_HOME=/usr/local/jdk-21" >> ~/.Renviron
您也可以使用 vim 等文本编辑器来编辑
.Renviron
。