如何在M1架构的Mac上安装rJava包

LDT*_*LDT 8 java macos r rjava

当我使用 M1 架构的 Mac 时,我在 R 中安装软件包时遇到了糟糕的情况。

\n

这是我到目前为止所遵循的步骤

\n
    \n
  1. 安装 Java https://www.azul.com/downloads/?os=macos&architecture=arm-64-bit&package=jdk,使用版本 Zulu: 16.30.19

    \n
  2. \n
  3. install.packages("rJava")在R中

    \n
  4. \n
  5. R CMD javareconf在终端

    \n
  6. \n
  7. dyn.load("/Library/Java/JavaVirtualMachines/zulu-16.jdk/Contents/Home/lib/server/libjvm.dylib")在R中

    \n
  8. \n
  9. library(rJava)

    \n
  10. \n
\n

这是我的错误

\n
Error: package or namespace load failed for \xe2\x80\x98rJava\xe2\x80\x99:\n .onLoad failed in loadNamespace() for \'rJava\', details:\n  call: dyn.load(jvm, FALSE)\n  error: unable to load shared object \'/Library/Java/JavaVirtualMachines/zulu-16.jdk/Contents/Home/lib/server/libjvm.dylib\':\n  dlopen(/Library/Java/JavaVirtualMachines/zulu-16.jdk/Contents/Home/lib/server/libjvm.dylib, 10): no suitable image found.  Did find:\n    /Library/Java/JavaVirtualMachines/zulu-16.jdk/Contents/Home/lib/server/libjvm.dylib: mach-o, but wrong architecture\n    /Library/Java/JavaVirtualMachines/zulu-16.jdk/Contents/Home/lib/server/libjvm.dylib: mach-o, but wrong architecture\n
Run Code Online (Sandbox Code Playgroud)\n

任何帮助将不胜感激

\n

小智 5

我遇到了和你一样的问题,但在发现这个问题被埋在一些文档中后设法让它继续下去。

\n
\n

要将 Java(特别是 rJava 包)与 CRAN (\xe2\x80\x98x86_64\xe2\x80\x99) 二进制发行版 R 在 \xe2\x80\x98arm64\xe2\x80\x99 上结合使用,macOS 安装 \xe2\x80 \x98x86_64\xe2\x80\x99 构建 Java JRE(例如来自 AdoptOpenJDK 的 Java JRE),然后运行 ​​sudo R CMD javareconf。

\n
\n
\n

要查看当前安装的 Java 的兼容版本,请运行 /usr/libexec/java_home -V -a x86_64。如果需要,设置环境变量 JAVA_HOME 以在这些变量之间进行选择,无论是从源代码构建 R 还是运行 R CMD javareconf 时。

\n
\n
\n

配置和构建 R 都会寻找 JRE 和编译 JNI 程序的支持(用于安装包 rJava 和 JavaGD);后者需要 JDK (Java SDK) 而不仅仅是 JRE99。

\n
\n

https://cran.r-project.org/doc/manuals/r-patched/R-admin.html

\n

  • 神送的。下载 R 4.1.2 的arm64版本(从CRAN)并通过x86_64版本安装解决了这个问题。 (2认同)

Shi*_*obe 5

这对我有用

  • 从 CRAN 安装 R 的最新稳定版本(在 4.3.1 (2023-06-16) 上测试)
  • 安装 x86_64 版本的 Java(版本 17 - 它似乎不适用于版本 8 或 11):brew tap homebrew/cask-versions && brew install --cask temurin17
  • 将其添加到 PATH 中export JAVA_HOME=$(/usr/libexec/java_home -v 17)
  • 跑步sudo -E R CMD javareconf

然后打开 Rinstall.packages('rJava')应该可以工作