我的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 会话时都更改它)
仅供参考: 1 当我使用
alternatives --display java
时,它给了我jdk1.7.0_79版本,这是错误的版本,我认为可能是rstudio中的R会话也在使用这个版本。但这只是猜测,并未得到证实。
2 当我直接在 bash 中启动 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
您也可以使用文本编辑器编辑
.Renviron
。