我最近从 OSX Mountain Lion"升级"到 Yosemite,并从 R 3.1.3"升级"到 3.2。rJava或任何依赖于 rJava 的包(例如,xlsx)导致 RStudio 崩溃(当我通过打开尝试此操作时,R 也崩溃了R.app直接地)。

在尝试了在 Stack Overflow 和其他地方找到的一些修复程序(下面有更多详细信息)后,我现在正在加载rJava或任何依赖于的包rJava不再导致 R 崩溃,但会导致以下错误:

library(rJava)
Error : .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.2/Resources/library/rJava/libs/rJava.so':
  dlopen(/Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib
  Referenced from: /Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so
  Reason: image not found
Error: package or namespace load failed for 'rJava'

但是,如果我从命令行调用 R 然后加载rJava或任何依赖于的包rJava,它似乎有效(或者至少我没有收到任何错误消息)。

我尝试了许多不同的尝试修复,其中一些尝试了几次,但不太记得我按照什么顺序做了什么(没有意识到这将是一个泥沼,并且没有真正跟踪)

  • 将以下内容添加到我的.bash_profile(每这个答案):

    导出 JAVA_HOME="/usr/libexec/java_home -v 1.8"
    导出 LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/server

  • 从命令行重新配置 java,如下所示:

    sudo R CMD javareconf -n

  • 已检查options("java.home")并发现这被设置为NULL这个问题):

    选项(“java.home”="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre")

  • 安装最新的Java开发工具包并重新安装rJava来自来源(不记得我在哪里找到的)。

在尝试所有这些的某个时候,我能够加载rJava没有使 R 崩溃,而是收到上面发布的错误消息。

我终于决定安装适用于 OS X 的 Java 2014-001(Java 6),因为我似乎已经没有选择了。.onLoad failed in loadNamespace() for 'rJava'上面发布了错误消息。

在回顾我已经看过的一些帖子时,我注意到另一个SO答案我之前错过了,它建议使用以下命令行代码打开 RStudio,为 RStudio 提供正确的 java 路径:

LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudio

这打开了一个 RStudio 窗口,我也能够加载rJava以及依赖它而不会出现错误的包。

最后,我尝试从命令行运行 R(我以前没有这样做过)。rJava或任何依赖于的包rJava有效并且不会抛出任何错误。

所以,我现在可以得到rJava如果我使用为 RStudio 提供 java 路径的代码从命令行打开 RStudio(如上所述),则可以正常工作。

有谁对如何诊断和解决这个问题有任何想法?

答案

我遇到了同样的问题,并经历了与你相同的步骤。

sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib

-f添加标志以强制覆盖现有文件/链接

来自: stackoverflow.com