我最近从 OSX Mountain Lion 升级到了约塞米蒂,从3.1.3升级到了3.2。升级之后,当我打开 R 或 RStudio 时,我收到一条弹出消息,说我需要安装 Java6。此外,加载 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’
However, if I invoke R from the command line and then load rJava
or any package that depends on rJava
, it seems to work (or at least I don't get any error messages).
我尝试了很多不同的修复方法,其中一些尝试了好几次,但是我不太记得我是按照什么顺序做的(没有意识到这会是一个如此的困境,也没有真正跟上) ,但是这里有一些要点:
在我的 .bash_profile
(每个 这么回答)中增加了以下内容:
Export JAVA _ HOME = “/usr/libexec/JAVA _ home-v 1.8”
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/server
从命令行重新配置 java 如下:
Javareconf-n
检查 options("java.home")
,发现它被设置为 NULL
。我尝试将它设置为以下(每 这个所以问题) :
选项(“ Java.Home”= “/Library/Java/JavaVirtualMachines/jdk1.8.0 _ 45. jdk/Content/Home/jre”)
从源代码安装了最新的 JDK 并重新安装了 rJava
(不记得在哪里找到的了)。
在尝试所有这些方法的某个时候,我能够在不崩溃 R 的情况下加载 rJava
,但是却得到了上面发布的错误消息。此外,当我退出 RStudio 时,它似乎正常关闭,但随后会弹出一条“ RStudio 意外退出”消息,表明程序在试图关闭时已经崩溃。
I finally decided to install Java for OS X 2014-001适用于 OS X 2014-001 (Java 6), as I seemed to be running out of options. Now, when I opened R or RStudio the "This software needs Java 6" pop-up message no longer appeared. However, I was still getting the .onLoad failed in loadNamespace() for 'rJava'
error message posted above.
在回顾一些我已经看过的文章时,我注意到了以前没有看到的 另一个“如此”的回答,它建议使用以下命令行代码打开 RStudio,这些代码为 RStudio 提供了到 Java 的正确路径:
LD _ LIBRARY _ PATH = $(/usr/libexec/java _ home)/jre/lib/server: open-a RStudio
That opened an RStudio window and I was also able to load rJava
and packages that depend on it without getting an error.
最后,我尝试从命令行运行 R (我以前从未这样做过)。结果表明,在命令行上,加载 rJava
或任何依赖于 rJava
的包都能正常工作,并且不会抛出任何错误。
因此,如果我使用为 RStudio 提供 java 路径的代码(如上所述)从命令行打开 RStudio,我现在就可以让 rJava
工作。然而,我想找到一种方法来解决潜在的问题,不管它是什么,这样 RStudio 就可以以通常的 Mac 方式打开,而不需要命令行组装。我还担心安装旧版 Java 可能会导致问题。
有人知道如何诊断和解决这个问题吗?