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

6

我在使用 M1 架构的 Mac 时,安装 R 软件包时遇到了很大的问题。

以下是我迄今为止遵循的步骤:

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

  2. 在 R 中运行 install.packages("rJava")

  3. 在终端中运行 R CMD javareconf

  4. 在 R 中运行 dyn.load("/Library/Java/JavaVirtualMachines/zulu-16.jdk/Contents/Home/lib/server/libjvm.dylib")

  5. 在 R 中运行 library(rJava)

这是我的错误提示:

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

非常感谢您的帮助

3个回答

4

我让所有需要的软件包(例如 tabulizer - 参见这里)正常运行的方法是降级到Java 8。为了获得匹配的arm64构建版本,这意味着需要从Azul下载Java,因为Oracle没有(至今)发布该版本。


1
这真的很有帮助。我通过conda安装了Java 11。降级到Java 8,运行R CMD javareconf并重新安装rJava对我很有效! - dayne

4

我曾经和你有同样的问题,但在查找文档时找到了解决方法。

要在arm64 macOS上使用Java(具体来说是rJava包)与CRAN(x86_64)二进制分发版的R,请安装AdoptOpenJDK等Java JRE的x86_64版本,然后运行sudo R CMD javareconf。

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

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

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


2
真是太好了。从CRAN下载arm64版本的R 4.1.2并覆盖安装x86_64版本解决了这个问题。 - kentkr
1
@Levon Rush,您能将此响应转换为逐步教程吗?很抱歉,我无法跟随它,但我认为这正是我所需要的。谢谢 - Ruam Pimentel

2

这对我有效

  • 从 CRAN 安装最新稳定版本的 R(在 2023-06-16 上测试通过,版本为4.3.1)
  • 安装 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

然后打开 R 并执行 install.packages('rJava') 应该可以工作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接