Mac系统下无法在R中运行CoreNLP 2022年10月更新版本
解决Mac(arm64)上coreNLP加载失败的架构不兼容问题
运行
library(coreNLP)时出现如下错误:Error: package or namespace load failed for ‘coreNLP’: .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 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/jli/libjli.dylib' (no such file), '/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/jli/libjli.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64'))
核心原因
你的Mac是arm64(Apple Silicon)架构,但当前使用的Java为x86_64版本,与原生arm64的R不兼容,导致rJava无法加载,进而引发coreNLP启动失败。
分步解决步骤
1. 确认Java和R的架构
- 打开终端,检查Java架构:
输出含java -versionx86_64说明是Intel版本,需替换为arm64版本;输出含aarch64/arm64则符合要求。 - 在R中检查R架构:
输出应为Sys.info()["machine"]arm64,若为x86_64,需切换到原生arm64版本(右键应用程序中的R图标→显示简介,取消勾选“使用Rosetta打开”)。
2. 安装arm64架构的Java
- 下载适配Apple Silicon的JDK(如OpenJDK 17+版本)。
- 安装完成后配置
JAVA_HOME环境变量:# 替换为你的JDK实际路径,例如/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home echo 'export JAVA_HOME="/Library/Java/JavaVirtualMachines/[你的JDK版本].jdk/Contents/Home"' >> ~/.zshrc # 若使用bash,替换为~/.bash_profile source ~/.zshrc - 验证配置:
确认输出显示arm64架构。echo $JAVA_HOME java -version
3. 重新配置并安装rJava
- 在R中卸载现有rJava包:
remove.packages("rJava") - 终端运行
javareconf,让R关联新的arm64 Java:R CMD javareconf - 重新安装rJava:
install.packages("rJava") - 测试rJava加载:
无报错则说明rJava配置成功。library(rJava)
4. 重新安装并测试coreNLP
- 在R中卸载现有coreNLP包:
remove.packages("coreNLP") - 重新安装coreNLP:
install.packages("coreNLP") - 加载测试:
此时应能正常加载。library(coreNLP)
内容的提问来源于stack exchange,提问作者Eva Bonning
相关产品推荐
相关产品推荐

