eip*_*i10 116 java r rjava rstudio macos-high-sierra
我最近从OSX Mountain Lion"升级"到Yosemite,从R 3.1.3升级到3.2.升级之后,当我打开R或RStudio时,我收到一条弹出消息,说我需要安装Java 6.此外,加载rJava或依赖于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’
Run Code Online (Sandbox Code Playgroud)
但是,如果我从命令行调用R然后加载rJava或依赖的任何包rJava,它似乎工作(或至少我没有得到任何错误消息).
我已经尝试了一些不同的尝试修复,其中一些已经修改了几次,并且不能完全记住我按照什么顺序做了什么(没有意识到这将是如此的泥潭并且并没有真正保持跟踪) ,但这是它的要点:
添加了以下内容.bash_profile(根据此SO答案):
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问题):
选项( "java.home"= "/库/的Java/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'上面发布的错误消息.
在回顾我已经看过的一些帖子时,我注意到之前我错过了另一个SO答案,建议使用以下命令行代码打开RStudio,为RStudio提供正确的java路径:
LD_LIBRARY_PATH = $(/ usr/libexec/java_home)/ jre/lib/server:open -a RStudio
这打开了一个RStudio窗口,我也能够加载rJava和依赖它的包而不会出错.
最后,我尝试从命令行运行R(我之前没有做过).事实证明,在命令行,加载rJava或依赖于rJava工作的任何包,并不会抛出任何错误.
所以,rJava如果我从命令行打开RStudio ,我可以开始工作,代码为RStudio提供java路径(如上所述).但是,我想找到一种方法来解决潜在的问题,无论它是什么,这样就可以用通常的Mac方式打开RStudio,而不需要命令行kludge.我还担心安装旧版本的Java可能会导致问题.
有没有人对如何诊断和解决这个问题有任何想法?
Ale*_*pov 275
我遇到了同样的问题,并且和你一样经历了同样的步骤.允许通过Finder/Spotlight启动RStudio的最后一步是将libjvm.dylib链接到/ usr/local/lib:
sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
Run Code Online (Sandbox Code Playgroud)
-f 添加标志以强制覆盖现有文件/链接
lal*_*las 52
在OSX El Capitan 10.11上,用户无权写入/ usr/lib.因此,请使用以下命令:
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
Run Code Online (Sandbox Code Playgroud)
小智 29
你可以通过运行来明确地加载libjvm.dylib
dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/jre/lib/server/libjvm.dylib')
library(rJava)
Run Code Online (Sandbox Code Playgroud)
End*_*dre 27
在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
Run Code Online (Sandbox Code Playgroud)
您还必须通知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/
Run Code Online (Sandbox Code Playgroud)
San*_*aan 17
以下命令有效:
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
Run Code Online (Sandbox Code Playgroud)
之后,在RStudio中,通过加载"xlsx"包来加载rJava.
library("xlsx")
Run Code Online (Sandbox Code Playgroud)
PS#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上对此进行了测试.)
PS#2我发现它openxlsx更快,不依赖Java工作,所以我现在正在使用该软件包.希望能帮助别人.
这就是我在运行Mac OS X El Capitan(10.11.6)的两台Mac上配置它的方法:
通过在终端窗口中发出以下命令来卸载'rJava':
Rscript -e 'remove.packages("rJava")'
sudo Rscript -e 'remove.packages("rJava")'
Run Code Online (Sandbox Code Playgroud)从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
Run Code Online (Sandbox Code Playgroud)关闭并重新启动任何终端,R和RStudio窗口(以获取更改.bashrc).
在终端窗口中运行以下命令:
sudo ln -sf $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
Run Code Online (Sandbox Code Playgroud)在终端窗口中运行以下命令:
sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'
Run Code Online (Sandbox Code Playgroud)这是它的简单步骤:
打开 R 并使用以下命令安装 rJava:
install.packages("rJava", dependencies=TRUE, type="source")
您应该能够使用CRAN rJava,而无需重新编译rJava或通过将共享库链接到R框架库目录来执行任何其他步骤.
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Libraries
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74699 次 |
| 最近记录: |