我最近从OSX Mountain Lion升级到优胜美地,从R 3.1.3升级到3.2。升级后,当我打开R或RStudio时,立即弹出消息,提示我需要安装rJava
Java6 。此外,加载或依赖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
(每个SO回答):导出JAVA_HOME =“ / usr / libexec / java_home -v 1.8”
导出LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / server从命令行重新配置Java,如下所示:
须藤R CMD javareconf -n
检查
options("java.home")
并发现此设置为NULL
。我尝试将其设置为以下内容(针对此SO问题):options(“ java.home” =“ / Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / jre”)
安装了最新的Java开发工具包并
rJava
从源代码重新安装(不记得我在哪里找到了那个工具包)。
在尝试所有这些方法的某个时刻,我能够加载rJava
而不会崩溃R,但是却在上面发布了错误消息。另外,当我退出RStudio时,它似乎正常关闭,但随后弹出“ RStudio意外退出”消息,表明该程序在尝试关闭时崩溃了。
我最终决定为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:打开-a RStudio
那打开了一个RStudio窗口,我也能够加载rJava
和打包依赖它的窗口而不会出现错误。
最后,我尝试从命令行运行R(我之前没有做过)。事实证明,在命令行上,加载rJava
或依赖于rJava
工作且不会引发任何错误的。
所以,我现在可以 rJava
如果我从命令行打开RStudio,并使用赋予RStudio Java路径的代码,开始工作(如上所述)。但是,我想找到一种解决潜在问题的方法,无论它可能是什么,以便可以用Mac惯用的方式打开RStudio,而无需使用命令行。我还担心安装旧版本的Java可能会导致问题。
是否有人对如何诊断和解决此问题有任何想法?
Yosemite
,所以不确定。请参阅以下有关的答案El Capitan
。
El Capitan
下面的解决方案在按预期RStudio
加载后会很有帮助rJava
。
otool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
获取共享库的列表以及如何解析它们。我不确定如何发现的运行时内容@rpath
。
LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudio
技巧之前,我已经开始使用此工具,但是它不再起作用。我写了一篇有关此问题的博客文章,并在那里描述了此问题。我想知道其他人在此配置中是否也遇到此问题,或者这是我的错。