在MacOS 10.13.4上配置Oracle Java 10.0.1适配R 3.4.4遇错求助
R CMD javareconf问题 我来帮你搞定这个兼容问题——R 3.4.4发布时Java 10还属于较新的版本,加上MacOS的环境配置细节,很容易出现这类截断性的配置失败。先理清楚你的问题场景:你在MacOS 10.13.4上配置Oracle Java 10.0.1适配R 3.4.4,执行R CMD javareconf时输出到Non-system Java on macOS tryin...就中断了。
下面是经过验证的解决步骤:
1. 先把Java环境变量配置扎实
首先确认你的JAVA_HOME是否正确指向了Java 10的安装目录,在终端执行:
echo $JAVA_HOME
如果输出不是/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home,手动临时设置(要永久生效的话,把这两行加到~/.bash_profile或~/.zshrc里):
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH
2. 强制指定Java头文件路径,绕过R的版本检测
R 3.4.4对Java 10的版本检测逻辑有问题,咱们直接给javareconf指定头文件路径,强制完成配置:
sudo R CMD javareconf JAVA_CPPFLAGS="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
执行时输入管理员密码就行,这个命令会跳过R默认的版本校验,直接用我们指定的Java编译参数。
3. 确认clang编译环境没问题
Xcode Command Line Tools是R编译依赖的关键,先确保它安装好了:
xcode-select --install
如果已经安装会提示“已安装”。然后确认clang的位置是否在默认路径:
which clang
正常输出应该是/usr/bin/clang,如果不是,把clang所在路径加到PATH环境变量里。
4. 验证配置是否成功
完成上面的步骤后,打开R控制台,先初始化Java环境,再测试rJava包:
.jinit() library(rJava)
如果没报错,说明适配成功了。要是rJava还没装,先执行install.packages("rJava")安装。
备选方案:降级到Java 8
如果上面的步骤还是搞不定,最稳妥的办法是把Java降级到8版本(Oracle Java 8或者OpenJDK 8都可以)——R 3.4.x对Java 8的兼容性是经过充分测试的,基本不会出问题。
内容的提问来源于stack exchange,提问作者Erich Neuwirth

