Linux下RStudio默认Java路径查询及永久配置方法(适配sparklyr)
RStudio启动会话时默认的Java路径
Linux下RStudio启动时使用的是非登录shell,不会加载/etc/profile这类登录shell的配置文件,它会优先读取系统通过alternatives工具设置的默认Java版本(即你看到的jdk1.7.0_79),如果没有任何环境变量明确指定JAVA_HOME,则Sys.getenv("JAVA_HOME")会返回空值。这就是bash启动R正常但RStudio异常的核心原因。
永久修改RStudio中的Java路径方案
1. 全局生效(所有RStudio用户)
编辑RStudio服务器的配置文件/etc/rstudio/rserver.conf(不存在则创建),添加:
rsession-env-vars=JAVA_HOME=/usr/local/java/jdk1.8.0_131
保存后重启RStudio服务:
sudo systemctl restart rstudio-server
2. 当前用户生效
在用户主目录下创建或编辑.Rprofile文件,添加:
if (Sys.getenv("JAVA_HOME") == "") { Sys.setenv(JAVA_HOME = "/usr/local/java/jdk1.8.0_131") }
每次RStudio启动新会话时,会自动执行该脚本中的配置。
3. 系统级非登录shell配置
编辑/etc/environment(所有进程都会读取的系统环境变量文件),添加:
JAVA_HOME="/usr/local/java/jdk1.8.0_131"
保存后无需重启,下次RStudio启动会话即可生效。
或者编辑/etc/bash.bashrc,添加:
export JAVA_HOME=/usr/local/java/jdk1.8.0_131 export PATH=$JAVA_HOME/bin:$PATH
该配置对所有bash非登录shell生效,包括RStudio。
4. 调整系统默认Java版本(可选)
若希望整个系统默认Java切换为jdk1.8.0_131,可通过alternatives命令设置:
# 注册Java和Javac的备选版本 sudo alternatives --install /usr/bin/java java /usr/local/java/jdk1.8.0_131/bin/java 100 sudo alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.8.0_131/bin/javac 100 # 选择默认版本 sudo alternatives --config java sudo alternatives --config javac
在弹出的选项中选择对应jdk1.8.0_131的序号即可。注意此操作会影响整个系统的Java默认版本,需确认其他服务不受影响。
内容的提问来源于stack exchange,提问作者cloudscomputes
相关产品推荐
相关产品推荐

