Apple M1设备R语言加载xlsx包时rJava架构不兼容问题求助
解决M1 Mac上R语言xlsx包加载失败的问题
问题根源
报错信息明确显示:你安装的Java是x86_64架构,而M1 Mac需要arm64e架构版本,两者不兼容导致rJava无法加载,进而xlsx包启动失败。
解决方案
方案1:安装arm64架构的Java并重新编译rJava/xlsx
- 卸载当前x86_64版本Java:
- 终端运行
sudo rm -rf /Library/Internet Plug-Ins/JavaAppletPlugin.plugin - 删除Java安装目录:
sudo rm -rf /Library/Java/JavaVirtualMachines/[你的Java版本目录]
- 终端运行
- 下载适配arm64的Java(推荐开源免费的Adoptium Temurin 11或17版本)
- 安装后验证架构:终端运行
java -version,输出中需包含aarch64或arm64字样 - 在R中重新安装源码版的rJava和xlsx:
install.packages(c("rJava", "xlsx"), type = "source") library(xlsx)
方案2:用Rosetta 2以x86_64模式运行R
如果不想更换Java版本,可让R以兼容模式运行:
- 打开应用程序文件夹,找到R.app,右键选择「显示简介」
- 勾选「使用Rosetta打开」,重启R
- 在重启后的R中重新安装rJava和xlsx包:
install.packages(c("rJava", "xlsx")) library(xlsx)
方案3:改用无Java依赖的Excel处理包
这是最省心的方案,完全避开Java兼容性问题:
- readxl + writexl:轻量工具,专注基础读写操作
install.packages(c("readxl", "writexl")) # 读取Excel文件 library(readxl) data <- read_excel("your_file.xlsx", sheet = 1) # 写入Excel文件 library(writexl) write_xlsx(data, "output.xlsx") - openxlsx:功能全面,支持格式设置、多工作表管理等进阶操作
install.packages("openxlsx") library(openxlsx) # 读取数据 data <- read.xlsx("your_file.xlsx") # 写入带格式的文件示例 wb <- createWorkbook() addWorksheet(wb, "Sheet1") writeData(wb, "Sheet1", data) saveWorkbook(wb, "formatted_output.xlsx", overwrite = TRUE)
内容的提问来源于stack exchange,提问作者JStark
相关产品推荐
相关产品推荐

