我最近从OSX Mountain Lion升级到Yosemite,从R 3.1.3升级到3.2。升级后,当我打开R或RStudio时,我收到一条弹出消息,告诉我需要安装Java6。此外,加载rJava
或任何依赖于rJava的包(例如,xlsx
)会导致RStudio崩溃(当我直接打开R.app
尝试执行此操作时,R也会崩溃)。
在尝试了在堆栈溢出和其他地方找到的一些修复程序(下面有更多详细信息)之后,我发现加载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
中添加了以下内容(根据this SO answer):导出JAVA_HOME="/usr/libexec/java_home -v 1.8“
导出LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/server
从命令行执行
sudo R CMD javareconf -n
options("java.home")
,发现它被设置为NULL
。我尝试将其设置为以下内容(根据this SO question):options("java.home"="/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre")
rJava
(不记得在哪里找到的)。在尝试所有这些方法时,我可以在不崩溃R的情况下加载rJava
,但却得到了上面发布的错误消息。此外,当我退出RStudio时,它似乎正常关闭,但随后会弹出"RStudio意外退出“消息,指示程序在尝试关闭时崩溃。
我最终决定安装Java for OS X 2014-001 (Java6),因为我似乎已经没有选择了。现在,当我打开R或RStudio时,弹出消息“该软件需要Java6”不再出现。但是,我仍然收到上面发布的.onLoad failed in loadNamespace() for 'rJava'
错误消息。
在回顾我已经看过的一些帖子时,我注意到了我以前错过的another SO answer,它建议使用以下命令行代码打开RStudio,该代码为RStudio提供了正确的java路径:
打开LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server:
-a RStudio
这打开了一个RStudio窗口,我还可以加载rJava
和依赖它的包,而不会出现错误。
最后,我尝试从命令行运行R(这是我以前没有做过的)。事实证明,在命令行上,加载rJava
或任何依赖于rJava
的包都是有效的,并且不会抛出任何错误。
因此,如果我从命令行打开rJava
,并使用为RStudio提供java路径的代码(如上所述),我现在就可以让RStudio工作了。然而,我想找到一种方法来修复潜在的问题,无论它可能是什么,这样RStudio就可以以通常的Mac方式打开,而不需要命令行的繁琐。我还担心安装旧版本的Java可能会带来问题。
有没有人知道如何诊断和解决这个问题?
发布于 2015-06-24 23:57:39
我也有同样的问题,也经历了和你一样的步骤。允许通过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
标志以强制覆盖现有文件/链接
发布于 2015-10-20 17:43:36
在OSX El Capitan 10.11上,用户没有写入/usr/lib的权限。因此,请改用以下命令:
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
发布于 2015-12-28 06:55:54
您可以显式地加载libjvm.dylib,如下所示
dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/jre/lib/server/libjvm.dylib')
library(rJava)
https://stackoverflow.com/questions/30738974
复制相似问题