我最近从OSX Mountain Lion升级到Yosemite,从R 3.1.3升级到3.2。在升级后,当我打开R或RStudio时,弹出消息提示我需要安装Java 6。此外,加载rJava
或任何依赖rJava的软件包(例如xlsx
)会导致RStudio崩溃(当我直接打开 R.app
时,R也会崩溃)。
尝试了一些在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
的包,它似乎可以工作(或者至少我没有收到任何错误消息)。
我尝试了很多不同的修复方式,有些尝试了几次,不能完全记得我按照什么顺序做了什么(没有意识到这将是一个如此错综复杂的问题,并且没有真正保持跟踪),但这是要点:
根据这个 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
检查
options("java.home")
,发现其设置为NULL
,我尝试将其设置为以下值(根据这个 SO 问题):options("java.home"="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre")
安装了最新的Java Development Kit并从源代码重新安装了
rJava
(无法记住我在哪里找到的)。
在尝试所有这些步骤之一时,我能够在不崩溃R的情况下加载rJava
,但代替地会出现上面发布的错误消息。此外,当我退出RStudio时,它似乎正常关闭,但然后会弹出“RStudio意外退出”的消息,表明程序在尝试关闭时崩溃。
最后,我决定安装Java for OS X 2014-001(Java 6),因为我似乎已经没有选择了。现在,当我打开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(以前没有这样做)。结果发现,在命令行上加载rJava
或任何依赖于rJava
的包都可以工作并且不会引发任何错误。
因此,如果我使用给出RStudio java路径的代码从命令行中打开RStudio,我现在可以使rJava
运作。但是,我想找到一种方法来解决
LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudio
的方法使其工作,但现在不再起作用了。我已经撰写了一篇关于这个问题的博客文章并在那里描述了这个问题。我想知道其他人在这个配置中是否也遇到了这个问题,或者是我的问题。 - Paul KlemmYosemite
,所以不确定。请参阅下面与El Capitan
相关的答案。 - eipi10El Capitan
解决方案非常有帮助,只要RStudio
按预期加载rJava
即可。 - Paul Klemm