rJava 错误加载 registerDoSNOW() 或任何外部 RStudio 进程

rJava errors loading registerDoSNOW() or any external RStudio process

> registerDoSNOW(makeCluster(4, type="SOCK")) Loading required package: methods Loading required package: DBI Loading required
> package: rJava Error: package or namespace load failed for ‘rJava’: 
> .onLoad failed in loadNamespace() for 'rJava', details:   call:
> dyn.load(file, DLLpath = DLLpath, ...)   error: unable to load shared
> object
> '/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so':
> dlopen(/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so,
> 6): Library not loaded: @rpath/libjvm.dylib   Referenced from:
> /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
> Reason: image not found Error: package ‘rJava’ could not be loaded
> Execution halted

如果我尝试使用 Knitr,也会发生这种情况。所以它与 registerDoSNOW() 无关,但与 rJava 和某种错误路径有关。

我研究了 rJava 未加载的常见解决方案(例如 )。

1) 我的Java是64位版本 2) library(rJava) 加载正常 3) 只有当我尝试使用 registerDoSNOW(makeCluster(4, type="SOCK"))

这只是在我从 3.3 升级到 R 3.4.2 后才开始发生的。我升级是因为 data.table 抱怨它无法使用 64 位架构。当我升级时,RStudio 不会 运行 Java,我通过执行 sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

修复了这个问题

我尝试了这里的解决方案 http://paulklemm.com/blog/2015-02-20-run-rjava-with-rstudio-under-osx-10-dot-10/ 但没有用。

java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

我相信这个过程会解决您的问题。

  1. 从 r 终端安装 rJava

  2. 运行 ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

    • 如果文件已经存在,用sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib覆盖它
  3. 运行 R CMD javareconf 在 mac 终端会话中

基本上,您只是设置了 rJava 需要的 java 文件,然后重新配置 R,以便它知道要查找的位置。

如果你得到类似/opt/X11/lib/*的错误,那么你需要安装XQuartz,它可以在here.

中找到