我最近从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
的任何包,它似乎工作(或者至少我没有收到任何错误消息)
我尝试了一些不同的尝试修复,其中一些已经修改了几次,并且不能完全记住我按照什么顺序做了什么(没有意识到这将是一个混乱并且不是真的保持跟踪),但这是它的要点:
在我的.bash_profile
(每this SO answer)中添加了以下内容:
导出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
。我尝试将其设置为以下(this SO question}):
选项( “java.home”= “/库/爪哇/ JavaVirtualMachines / jdk1.8.0_45.jdk /内容/主页/ JRE”)
安装了最新的Java开发工具包并从源代码重新安装了rJava
(不记得我在哪里找到了它)。
在尝试所有这些的某个时刻,我能够加载rJava
而不会崩溃R,而是收到上面发布的错误消息。此外,当我退出RStudio时,它似乎正常关闭,但随后会弹出“RStudio意外退出”消息,表示程序在尝试关闭时崩溃了。
我最终决定安装Java for OS X 2014-001(Java 6),因为我似乎没有选择。现在,当我打开R或RStudio时,“此软件需要Java 6”弹出消息不再出现。但是,我仍然收到上面发布的.onLoad failed in loadNamespace() for 'rJava'
错误消息。
在回顾我已经看过的一些帖子时,我注意到我之前错过了another SO answer,建议使用以下命令行代码打开RStudio,为RStudio提供正确的java路径:< / p>
LD_LIBRARY_PATH = $(/ usr / libexec / java_home)/ jre / lib / server:open -a RStudio
这打开了一个RStudio窗口,我还能够加载rJava
和依赖它的包而不会出错。
最后,我尝试从命令行运行R(我之前没有做过)。事实证明,在命令行中,加载rJava
或任何依赖于rJava
的包都可以正常工作,并且不会抛出任何错误。
所以,如果我从命令行打开RStudio并使用为RStudio提供java路径的代码(如上所述),我现在可以使rJava
工作。但是,我想找到一种方法来解决潜在的问题,无论它是什么,这样就可以用通常的Mac方式打开RStudio,而不需要命令行kludge。我还担心安装旧版本的Java可能会导致问题。
有没有人对如何诊断和解决这个问题有任何想法?
答案 0 :(得分:273)
我遇到了同样的问题并且和你一样经历了同样的步骤。允许通过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
标志以强制覆盖现有文件/链接
答案 1 :(得分:52)
在OSX El Capitan 10.11上,用户无权写入/ usr / lib。因此,请使用以下命令:
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
答案 2 :(得分:28)
您可以通过像
一样运行来明确加载libjvm.dylibdyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/jre/lib/server/libjvm.dylib')
library(rJava)
答案 3 :(得分:25)
在macOS High Sierra(10.13.1)和Java Version 9上,您必须使用稍微不同的JVM路径(注意路径中缺少的jre
文件夹与早期Java版本的说明相比):
sudo ln -f -s $(/usr/libexec/java_home)/lib/server/libjvm.dylib /usr/local/lib
您还必须通知R有关JVM的信息:
MY_R_VERSION=$(Rscript -e "cat(with(R.version, sprintf('%s.%s', major, substring(minor, 1, 1))))")
ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/$MY_R_VERSION/Resources/lib/
答案 4 :(得分:17)
以下命令有效:
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
之后,在RStudio中,加载rJava可以通过加载&#34; xlsx&#34;封装
library("xlsx")
P.S。 #1环境:Mac OS X El Capitan 10.11.3+,RStudio 0.99.491+和R 3.2.3+。 (我现在也在macOS Sierra(10.12)和R.3.3.1上对此进行了测试。)
P.S。 #2我发现openxlsx
要快得多,并且不依赖Java来工作,所以我现在正在使用该软件包。希望能帮助他人。
答案 5 :(得分:6)
这就是我在运行Mac OS X El Capitan(10.11.6)的两台Mac上配置它的方法:
通过在终端窗口中发出以下命令来卸载'rJava':
Rscript -e 'remove.packages("rJava")'
sudo Rscript -e 'remove.packages("rJava")'
从Oracle下载并安装Java软件:https://www.java.com/en/download/mac_download.jsp
使用您喜欢的编辑器将以下行添加到/Users/<userid>/.bashrc
:
# Set JAVA_HOME so rJava package can find it
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)/jre
关闭并重新启动任何终端,R和RStudio窗口(以获取对.bashrc
的更改)。
在终端窗口中运行以下命令:
sudo ln -sf $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
在终端窗口中运行以下命令:
sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'
答案 6 :(得分:5)
您应该能够使用CRAN rJava,而无需重新编译 rJava 或通过将共享库链接到R框架库目录来执行任何其他步骤。
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Libraries
答案 7 :(得分:3)
以下是简单的步骤:
打开R并使用以下命令安装rJava:
install.packages(“rJava”,dependencies = TRUE,type =“source”)
答案 8 :(得分:3)
使用最新的Java SE 10 JDK在OSX High Sierra上进行全新安装时,找不到图像问题。
我能够使用rJava Github问题页面上的修复解决rJava的路径问题:https://github.com/s-u/rJava/issues/78
R CMD javareconf JAVA_CPPFLAGS = -I / System / Library / Frameworks / JavaVM.framework / Headers
答案 9 :(得分:1)
这对我来说对MAC有用:
在~/.profile
或~/.bashrc
添加此行:
%export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home
1.1 % source .profile
(或% source .bashrc
)
% sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
remove.packages(rJava)
remove.packages(Rweka)
%sudo R CMD javareconf
install.packages("rJava", dependencies = TRUE, type = "source")
install.packages("rJava", dependencies = TRUE, type = "source")
library("rJava", "RWeka")
祝你好运。
答案 10 :(得分:1)
也许另一个简单的答案不会触及您的文件系统:
$ install_name_tool -add_rpath /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/server /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
(用您的JDK路径替换jdk1.8.0_131.jdk
。)
答案 11 :(得分:1)
检查libjvm.dylib文件的位置。
试试这个,在我看来这很有效:
dyn.load('/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/lib/server/libjvm.dylib')
library(rJava)
答案 12 :(得分:1)
我经历了所有可能的故障排除过程,然后从Oracle downloads安装了jdk-11.0.1_osx-x64_bin.dmg
此后一切都很好。
检查运行库('rJava')时未加载的库版本,并将其与您需要安装的Java版本进行匹配。
答案 13 :(得分:0)
下面的这一行解决了我在rJava
包中遇到的问题,正如本次讨论中的其他人所做的那样。我确信这个问题不止一个解决方案,我真诚地感谢他们所有人的贡献,因为有时像下面这样的一行可以节省大量的时间去垃圾!
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
答案 14 :(得分:0)
您可以在此下载El Capitan的旧版Java 6:https://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US 这样做之后,rJava包对我有用。
答案 15 :(得分:0)
在命令行上运行以下命令:sudo R CMD javareconf
上面的几个解决方案已经提到了这一点,但他们还建议删除并随后重新安装rJava
包。我发现这些额外的步骤是不必要的。
答案 16 :(得分:0)
我注意到,在Rstudio中加载时,“ rJava”对于JDK版本非常严格。
在我的情况下(对于Mac OS 10.14.6-Mojave),我已经安装了jdk-13,并已针对jdk-11进行了测试。
我已将我的JDK版本链接到Rstudio(JDK 11)认为有效的不存在的目录:
sudo ln -sf /Library/Java/JavaVirtualMachines/jdk-13.jdk/ /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk
令人惊讶的是,它就像一个魅力...
顺便说一句,按照本机R中的先前说明运行“ rJava”没有问题。
答案 17 :(得分:0)
您可以使用以下命令在R中更改引用:
sudo install_name_tool -change /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/libjvm.dylib /Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.6/Resources/library/rJava/libs/rJava.so