r语言 - 在Mac上运行xlsx和rJava错误



我最近开始在MacBook上安装M1 Max。但是现在,在R中,使用xlsx,我得到这个错误:

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'))

rJava似乎是问题,所以我试图安装并运行:

install.packages("rJava")
library(rJava)
Error: package or namespace load failed for ‘rJava’:
.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'))

我四处阅读,看到M1的其他人也有类似的问题:

如何在Mac上安装rJava包

https://github.com/rstudio/rstudio/issues/11130

我试着按照这些步骤,但仍然不能使它工作。

这是我的R版本- R版本4.2.2(64位)。这是我的java版本- 1.8.0_351(64位)。

我尝试了R CMD javareconf在终端,并重新启动机器,但没有变化。

我读到我可能需要安装javaJDK 17 aarch64(无法在Macbook上使用rJava包与Apple M1芯片,得到下面的错误),或将java降级到版本8 (https://github.com/rstudio/rstudio/issues/11130)。

TBH我真的不明白这些页面上的建议,我担心会把我的机器搞砸。非常感谢您的帮助!

我已经设法解决了这个问题。答案来自这个帖子:https://stackoverflow.com/a/70456947/8201618

brew install openjdk
brew info openjdk

然后是像

这样的命令
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

我运行了这个,重新启动了计算机,现在rJavaxlsx正在工作!

最新版本不支持xlsx。使用readxl包代替

install.package (readxl)

最新更新