MacOS下调用library(xlsx)时R会话崩溃的解决求助
M1 Mac下xlsx包崩溃&javareconf找不到jni.h的解决办法
优先推荐:换用无Java依赖的Excel工具包
xlsx包依赖Java,M1架构的Mac上Java环境兼容性问题特别多,没必要死磕。直接用下面这些不需要Java的包,功能一样稳定:
readxl:专门读Excel,语法简单没坑writexl:专门写Excelopenxlsx:读写都支持,功能和xlsx差不多
安装代码:
install.packages(c("readxl", "writexl", "openxlsx"))
用openxlsx读写示例:
library(openxlsx) # 读Excel df <- read.xlsx("你的文件路径.xlsx") # 写Excel write.xlsx(df, "输出文件路径.xlsx")
一定要用xlsx?那修复Java环境
1. 装对M1版的JDK
必须装ARM架构的JDK,别装x86的。可以选Apple官方JDK或者Azul Zulu的ARM版。装完在终端跑这个看路径:
/usr/libexec/java_home -V
会输出类似/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home的路径,记下来。
2. 手动指定JNI路径跑javareconf
终端里执行下面的命令,把路径换成你刚才记的自己的JDK路径:
sudo R CMD javareconf JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home \ CFLAGS="-I/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home/include/darwin" \ CPPFLAGS="-I/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home/include/darwin"
3. 重装xlsx相关包
先卸载旧的:
remove.packages(c("xlsx", "rJava"))
再重新装:
install.packages("rJava") install.packages("xlsx")
终极兜底:用Rosetta 2跑RStudio
如果上面都不行,试试让RStudio以x86模式运行:
- 找到应用程序里的RStudio,右键点「显示简介」
- 勾上「使用Rosetta打开」
- 重启RStudio再试试装xlsx
内容的提问来源于stack exchange,提问作者Rayan El Kholdi
相关产品推荐
相关产品推荐

