在macOS High Sierra 10.13.3(MRO-3.4.2)下无法安装XLConnectJars包
我之前帮不少用户踩过旧版MRO和macOS Java兼容的坑,你遇到的JNI_CreateJavaVM相关错误,大概率是Java版本不匹配或者环境变量配置没到位导致的,试试下面这些针对性的步骤:
确认Java版本必须是Java 8
MRO 3.4.2属于比较旧的版本,和Java 9及以上版本兼容性极差。先在终端运行java -version,如果显示的是Java 9+,你需要安装Java 8,安装后切换默认Java:export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.xxx.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH把上面的路径替换成你实际的Java 8安装路径,然后运行
java -version确认切换成功。重新配置R的Java环境(关键步骤)
之前的R CMD javareconf可能没正确关联到Java 8,用sudo加上指定JAVA_HOME的方式重新运行:sudo JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.xxx.jdk/Contents/Home R CMD javareconf运行过程中会提示确认配置,全部选yes即可。
验证rJava的加载状态
打开MRO,运行以下命令确认rJava能正常加载:library(rJava) .jinit()如果没有报错,说明rJava的配置是正常的;如果还是有JNI相关错误,检查你的JAVA_HOME是否真的指向Java 8,并且终端和R的环境变量一致(可以在R里运行
Sys.getenv("JAVA_HOME")查看)。尝试安装XLConnectJars
先在R里尝试从CRAN安装:install.packages("XLConnectJars", dependencies = TRUE)如果还是失败,试试手动下载对应MRO 3.4.2的源码包(比如XLConnectJars_0.2-15.tar.gz),然后在终端运行:
R CMD INSTALL /path/to/XLConnectJars_0.2-15.tar.gz注意替换成你下载的文件路径。
处理macOS权限问题
有时候macOS的系统权限会阻止R访问Java相关文件,你可以:- 给R.app或终端赋予「完整磁盘访问权限」(在系统偏好设置→安全性与隐私→隐私→完整磁盘访问权限里添加)
- 直接在终端里运行R,而不是通过RStudio,避免IDE的权限限制
内容的提问来源于stack exchange,提问作者sebastiann

