Arm架构Mac Monterey系统下R studio出现rJava加载错误如何解决
报错详情
Loading required namespace: rJava Failed with error: ‘.onLoad failed in loadNamespace() for 'rJava', details: call: dyn.load(jli, FALSE) error: unable to load shared object '/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/jli/libjli.dylib': dlopen(/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/jli/libjli.dylib, 0x000A): tried: '/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/jli/libjli.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/lib/libjli.dylib' (no such file)’ Cannot load rJava Error in .local(x, p, ...) : maxent() is not TRUE
根因说明
当前系统安装的Java为x86_64架构版本,与Arm架构Mac的运行环境不兼容,导致rJava包无法正常加载,进而触发依赖rJava的maxent相关功能报错。
解决步骤
- 第一步:卸载现有x86架构Java环境
打开终端执行以下命令删除现有x86架构的Java插件:sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
同时进入/Library/Java/JavaVirtualMachines/目录,删除目录下所有x86版本的JDK文件夹。 - 第二步:安装Arm架构适配的JDK
下载安装支持aarch64/arm64架构的JDK版本,安装完成后在终端执行java -version,确认返回信息中包含aarch64/arm64标识则安装正确。 - 第三步:刷新R的Java配置
终端执行如下命令,让R重新识别系统的Java路径:sudo R CMD javareconf
执行完成后查看输出信息,确认JAVA_HOME路径指向刚安装的Arm版JDK。 - 第四步:源码编译安装rJava包
打开R studio,在控制台执行以下命令从源码编译安装rJava,避免直接安装二进制版本出现架构不兼容问题:install.packages("rJava", type = "source")
安装完成后执行library(rJava),无报错则代表rJava加载正常。 - 第五步:验证maxent功能
重新加载你使用的依赖maxent的相关R包,运行之前触发报错的代码,确认maxent() is not TRUE报错消失。
异常排查
如果执行完上述步骤后仍然提示找不到Java路径,可以在运行代码前手动在R中指定JAVA_HOME路径:
# 替换下方路径为你实际安装的Arm版JDK的Home路径 Sys.setenv(JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk-xxx.jdk/Contents/Home")
内容的提问来源于stack exchange,提问作者Cristiano De servi

