rJava 在 RStudio/R 中“升级”到 OSX Yosemite 后出现错误

2022-08-31 08:41:24

我最近从OSX Mountain Lion“升级到Yosemite,从R 3.1.3升级到3.2。升级后,当我打开R或RStudio时,我立即收到一条弹出消息,说我需要安装Java 6。此外,加载或任何依赖于rJava的软件包(例如,)导致RStudio崩溃(当我通过直接打开来尝试这样做时,R也崩溃了)。rJavaxlsxR.app

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

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,然后加载或任何依赖于的包,它似乎可以工作(或者至少我没有收到任何错误消息)。rJavarJava

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

  • 在我的(根据这个SO答案)添加了以下内容:.bash_profile

    export JAVA_HOME=“/usr/libexec/java_home -v 1.8”
    export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/server

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

    sudo R CMD javareconf -n

  • 已检查并发现此值设置为 。我尝试将其设置为以下内容(根据此SO问题):options("java.home")NULL

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

  • 安装了最新的Java开发工具包并从源代码重新安装(不记得我在哪里找到那个)。rJava

在尝试所有这些时的某个时候,我能够在不崩溃R的情况下加载,但相反,上面发布了错误消息。此外,当我退出RStudio时,它似乎正常关闭,但随后会弹出“RStudio意外退出”消息,表明程序在尝试关闭时崩溃。rJava

我最终决定安装适用于OS X 2014-001(Java 6)的Java,因为我似乎没有选择。现在,当我打开R或RStudio时,“此软件需要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(我以前没有做过)。事实证明,在命令行上,加载或任何依赖于的包都可以工作,并且不会抛出任何错误。rJavarJava

因此,如果我使用为RStudio提供java路径的代码从命令行打开RStudio,我现在就可以开始工作了(如上所述)。但是,我想找到一种方法来解决潜在的问题,无论它是什么,以便RStudio可以以通常的Mac方式打开,而无需命令行笨拙。我还担心安装旧版本的Java可能会导致问题。rJava

有没有人对如何诊断和解决此问题有任何想法?


答案 1

我遇到了同样的问题,并经历了与你相同的步骤。允许通过Finder/Spotlight启动RStudio的最后一步是将libjvm.dylib链接到/usr/local/lib:

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

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


答案 2

在 OSX El Capitan 10.11 上,用户没有写入 /usr/lib 的权限。因此,请改用以下命令:

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

推荐