You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacBook(arm64)加载R语言xlsx包遇Java兼容及崩溃问题求助

问题描述

在arm64架构的MacBook上,使用arm64版本的R和RStudio加载xlsx包时遇到架构不兼容及JVM崩溃问题:

  1. 初始加载错误:
> library(xlsx)
Error: package or namespace load failed for ‘xlsx’:
 .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'))
  1. 更换arm64版本JRE后,出现JVM致命错误:
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00000002880bf2cc, pid=1308, tid=0x0000000000000103
#
# JRE version: Java(TM) SE Runtime Environment (8.0_381) (build 1.8.0_381-b09)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.381-b09 mixed mode bsd-aarch64 compressed oops)
# Problematic frame:
# v  ~StubRoutines::jshort_disjoint_arraycopy
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp

终端执行java -version输出:

java version "1.8.0_381"
Java(TM) SE Runtime Environment (build 1.8.0_381-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.381-b09, mixed mode)
解决建议

方案1:使用无Java依赖的替代包

xlsx依赖rJava,在arm64 Mac上兼容性问题较多,推荐改用纯R实现的包:

  • 基础读写操作:使用readxl(仅读取)和writexl(仅写入),无需Java支持,安装命令:
install.packages(c("readxl", "writexl"))
  • 复杂Excel操作:使用openxlsx,功能覆盖xlsx大部分场景,同样无需Java,安装命令:
install.packages("openxlsx")

方案2:修复rJava与arm64 Java的兼容性

如果必须使用xlsx,尝试以下步骤:

  1. 彻底卸载旧Java:
    • 删除/Library/Internet Plug-Ins/JavaAppletPlugin.plugin
    • 删除/Library/PreferencePanes/JavaControlPanel.prefPane
    • 执行sudo rm -rf /Library/Java/JavaVirtualMachines/jdk<版本号>.jdk(替换为实际安装的旧Java版本)
  2. 安装arm64版本的JDK 8:
    安装完成后设置环境变量,终端执行:
    echo 'export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_xxx.jdk/Contents/Home"' >> ~/.zshrc
    echo 'export PATH="$JAVA_HOME/bin:$PATH"' >> ~/.zshrc
    source ~/.zshrc
    
    验证:echo $JAVA_HOME应显示arm64 JDK路径,java -version需显示架构为aarch64
  3. 重新编译安装rJava:
    在RStudio中执行:
    install.packages("rJava", type = "source")
    
    安装完成后先加载rJava,再加载xlsx:
    library(rJava)
    library(xlsx)
    

方案3:使用Rosetta 2兼容模式

如果上述方案无效,可切换RStudio为x86_64模式:

  1. 找到应用程序中的RStudio,右键选择「显示简介」,勾选「使用Rosetta打开」
  2. 安装x86_64版本的JDK 8,并设置对应的环境变量
  3. 重新安装rJava和xlsx包

内容的提问来源于stack exchange,提问作者Yunna Lin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:53:29