Rstudio的针织按钮无法编织包含rJava包的Rmd文件。但是,如果我使用rmarkdown::render(),相同的Rmd文件就会毫无问题地呈现到html中。
我可以用以下代码再现错误:
Test.Rmd的内容:
---
title: "test"
output: html_document
---
```{r}图书馆(RJava)
单击“编织”按钮将返回:
processing file: test.Rmd
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.3/Resources/library/rJava/libs/rJava.so':
dlopen(/Library/Frameworks/R.framework/Versions/3.3/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.3/Resources/library/rJava/libs/rJava.so
Reason: image not found
Quitting from lines 7-8 (test.Rmd)
Error: package or namespace load failed for 'rJava'
Execution haltedrmarkdown::render("test.Rmd")工作得很好。此外,正常运行library(rJava) (而不是编织)也很好(在RStudio中)。
使用RStudio版本1.0.136,针织品1.15.1,rmarkdown 1.3,rJava 0.9-8,R3.3.2在macOS塞拉利昂10.12。
更新:按照@r2evans的请求添加Sys.getenv()的输出。DYLD_FALLBACK_LIBRARY_PATH的值有差异,但我不知道这是否重要。我用XXX替换了一些私人信息。
在html文件中,由针织按钮生成:
## __CF_USER_TEXT_ENCODING
## 0x1F5:0x0:0x52
## Apple_PubSub_Socket_Render
## /private/tmp/com.apple.launchd.HvKScioyGU/Render
## DISPLAY :0
## DYLD_FALLBACK_LIBRARY_PATH
## /Library/Frameworks/R.framework/Resources/lib
## EDITOR vi
## GIT_ASKPASS rpostback-askpass
## HOME XXX
## LANG en_CA.UTF-8
## LC_CTYPE en_CA.UTF-8
## LN_S ln -s
## LOGNAME XXX
## MAKE make
## NOT_CRAN true
## PAGER /usr/bin/less
## PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin
## PWD XXX
## R_ARCH
## R_BROWSER /usr/bin/open
## R_BZIPCMD /usr/bin/bzip2
## R_DOC_DIR /Library/Frameworks/R.framework/Resources/doc
## R_GZIPCMD /usr/bin/gzip
## R_HOME /Library/Frameworks/R.framework/Resources
## R_INCLUDE_DIR /Library/Frameworks/R.framework/Resources/include
## R_LIBS /Library/Frameworks/R.framework/Versions/3.3/Resources/library
## R_LIBS_SITE
## R_LIBS_USER ~/Library/R/3.3/library
## R_PAPERSIZE a4
## R_PAPERSIZE_USER a4
## R_PDFVIEWER /usr/bin/open
## R_PLATFORM x86_64-apple-darwin13.4.0
## R_PRINTCMD lpr
## R_QPDF /Library/Frameworks/R.framework/Resources/bin/qpdf
## R_RD4PDF times,inconsolata,hyper
## R_SESSION_TMPDIR /var/folders/15/vdvn4fvx0zn0gc93_5krp6h00000gn/T//RtmpiYlwpU
## R_SHARE_DIR /Library/Frameworks/R.framework/Resources/share
## R_SYSTEM_ABI osx,gcc,gxx,gfortran,?
## R_TEXI2DVICMD /usr/local/bin/texi2dvi
## R_UNZIPCMD /usr/bin/unzip
## R_ZIPCMD /usr/bin/zip
## RMARKDOWN_MATHJAX_PATH
## /Applications/RStudio.app/Contents/Resources/resources/mathjax-26
## RMARKDOWN_PREVIEW_DIR
## /var/folders/15/vdvn4fvx0zn0gc93_5krp6h00000gn/T//RtmpLe3D9z
## RS_RPOSTBACK_PATH /Applications/RStudio.app/Contents/MacOS/rpostback
## RS_SHARED_SECRET XXX
## RSTUDIO 1
## RSTUDIO_PANDOC /Applications/RStudio.app/Contents/MacOS/pandoc
## RSTUDIO_SESSION_PORT
## XXX
## RSTUDIO_USER_IDENTITY
## XXX
## RSTUDIO_WINUTILS bin/winutils
## SED /usr/bin/sed
## SHELL /bin/bash
## SHLVL 0
## SSH_AUTH_SOCK XXX
## TAR /usr/bin/tar
## TMPDIR /var/folders/15/vdvn4fvx0zn0gc93_5krp6h00000gn/T/
## USER XXX
## XPC_FLAGS 0x0
## XPC_SERVICE_NAME 0在由rmarkdown::render()生成的文件中
## __CF_USER_TEXT_ENCODING
## 0x1F5:0x0:0x52
## Apple_PubSub_Socket_Render
## /private/tmp/com.apple.launchd.HvKScioyGU/Render
## DISPLAY :0
## DYLD_FALLBACK_LIBRARY_PATH
## /Library/Frameworks/R.framework/Resources/lib:/Library/Frameworks/R.framework/Resources/lib:/Library/Frameworks/R.framework/Resources/lib:/Library/Frameworks/R.framework/Resources/lib:/Users/Jayme/lib:/usr/local/lib:/usr/lib::::::::
## EDITOR vi
## GIT_ASKPASS rpostback-askpass
## HOME XXX
## LANG en_CA.UTF-8
## LC_CTYPE en_CA.UTF-8
## LN_S ln -s
## LOGNAME XXX
## MAKE make
## PAGER /usr/bin/less
## PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin
## R_BROWSER /usr/bin/open
## R_BZIPCMD /usr/bin/bzip2
## R_DOC_DIR /Library/Frameworks/R.framework/Resources/doc
## R_GZIPCMD /usr/bin/gzip
## R_HOME /Library/Frameworks/R.framework/Resources
## R_INCLUDE_DIR /Library/Frameworks/R.framework/Resources/include
## R_LIBS_SITE
## R_LIBS_USER ~/Library/R/3.3/library
## R_PAPERSIZE a4
## R_PDFVIEWER /usr/bin/open
## R_PLATFORM x86_64-apple-darwin13.4.0
## R_PRINTCMD lpr
## R_QPDF /Library/Frameworks/R.framework/Resources/bin/qpdf
## R_RD4PDF times,inconsolata,hyper
## R_SESSION_TMPDIR /var/folders/15/vdvn4fvx0zn0gc93_5krp6h00000gn/T//RtmpLe3D9z
## R_SHARE_DIR /Library/Frameworks/R.framework/Resources/share
## R_SYSTEM_ABI osx,gcc,gxx,gfortran,?
## R_TEXI2DVICMD /usr/local/bin/texi2dvi
## R_UNZIPCMD /usr/bin/unzip
## R_ZIPCMD /usr/bin/zip
## RMARKDOWN_MATHJAX_PATH
## /Applications/RStudio.app/Contents/Resources/resources/mathjax-26
## RS_RPOSTBACK_PATH /Applications/RStudio.app/Contents/MacOS/rpostback
## RS_SHARED_SECRET XXX
## RSTUDIO 1
## RSTUDIO_PANDOC /Applications/RStudio.app/Contents/MacOS/pandoc
## RSTUDIO_SESSION_PORT
## XXX
## RSTUDIO_USER_IDENTITY
## XXX
## RSTUDIO_WINUTILS bin/winutils
## SED /usr/bin/sed
## SHELL /bin/bash
## SSH_AUTH_SOCK XXX
## TAR /usr/bin/tar
## TMPDIR /var/folders/15/vdvn4fvx0zn0gc93_5krp6h00000gn/T/
## USER XXX
## XPC_FLAGS 0x0
## XPC_SERVICE_NAME 0Update2 @r2evans的评论
将DYLD_FALLBACK_LIBRARY_PATH从render()中包含到.Rmd中将按预期更改Sys.getenv()的结果,但是使用针织按钮(与上面相同的错误消息)错误的行为仍然存在,并且render()中没有错误。新的.Rmd内容是:
---
title: "test2"
output: html_document
---
```{r}Sys.setenv(DYLD_FALLBACK_LIBRARY_PATH="/Library/Frameworks/R.framework/Resources/lib:/Library/Frameworks/R.framework/Resources/lib:/Library/Frameworks/R.framework/Resources/lib:/Library/Frameworks/R.framework/Resources/lib:/Users/Jayme/lib:/usr/local/lib:/usr/lib::::::::")
图书馆(RJava)
有趣的是,在上面的这个render()中使用test2.Rmd,并包含Sys.getenv()现在输出两个新变量,它们以前不存在,也没有使用针织按钮出现:
## DYLD_LIBRARY_PATH /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/server
## LD_LIBRARY_PATH :@JAVA_LD@我不知道这是否有意义,但我尝试了一个新的.Rmd (如下所示),它仍然给出相同的错误
---
title: "test3"
output: html_document
---
```{r}Sys.setenv(DYLD_FALLBACK_LIBRARY_PATH="/Library/Frameworks/R.framework/Resources/lib:/Library/Frameworks/R.framework/Resources/lib:/Library/Frameworks/R.framework/Resources/lib:/Library/Frameworks/R.framework/Resources/lib:/Users/Jayme/lib:/usr/local/lib:/usr/lib::::::::")
Sys.setenv(DYLD_LIBRARY_PATH="/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/server")
Sys.setenv(LD_LIBRARY_PATH= ":@JAVA_LD@")
图书馆(RJava)
发布于 2017-10-06 20:59:33
在命令行上运行以下命令为我解决了这个问题:
sudo R CMD javareconf发布于 2017-06-16 23:00:50
我和你有同样的问题。在Rstudio控制台中加载rJava没有问题,但在编写HTML文件时遇到加载失败。与您一样,我还能够使用render()命令在"knit“上加载rJava。我没有做您所做的广泛的测试,但是我最终可以通过遵循neilfws在注释中提供的链接来成功地加载rJava。
http://stackoverflow.com/questions/30738974/rjava-load-error-in-rstudio-r-after-upgrading-to-osx-yosemite
然后,我按照元(https://stackoverflow.com/users/5697305/yuan)的建议,使用以下命令在R中直接加载库:
dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0[YOURVERSIONHERE].jdk/Contents/Home/jre/lib/server/libjvm.dylib')在RMarkdown文件中插入这一行不会影响正常的控制台行为,但允许使用“针织”按钮进行编织。从来不知道为什么,但解决方案奏效了。
发布于 2017-03-03 00:15:41
你知道你用的是哪种Java吗?我对Java还不太了解,不知道我的经验是否有用,但是,当我试图复制您的错误时,我被指向了这个站点:
在这里,我下载并安装了OS X 10.11 El Capitan、OS 10.10 Yosemite、OS 10.9小牛、OS 10.8山狮和OS 10.7 Lion的遗留Java 6运行时。这样做可以解决您的错误吗?
我正在用MacBook 10.12.3,RStudio 1.0.136,RJava0.9-8开发一个MacBook.
https://stackoverflow.com/questions/42394244
复制相似问题