2017-02-22 54 views
9

Rstudio的编织按钮无法编织包含rJava软件包的rmark(Rmd)文件。但是,如果我使用rmarkdown::render(),则相同的Rmd文件会呈现为html而不会出现问题。Rstudio编织按钮无法加载rJava

我可以重现错误与下面的代码:

内容test.Rmd的:

--- 
title: "test" 
output: html_document 
--- 

```{r} 
library(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 halted 

而且rmarkdown::render("test.Rmd")工作正常。另外,通常运行library(rJava)(不是针织)也可以正常工作(在RStudio中)。

在macOS Sierra 10.12中使用RStudio version 1.0.136,knitr 1.15.1,rmarkdown 1.3,rJava 0.9-8,R 3.3.2。

更新:根据@ 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  0 

UPDATE2在从@ 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::::::::") 
library(rJava) 
``` 

有趣的是,在此test2.Rmd略高于使用render(),并且包括Sys.getenv()现在输出两个新的变量,之前不​​存在,不存在使用针织按钮:

​​

我没有,如果它是有道理的,但我尝试了一个新的.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= ":@[email protected]") 
library(rJava) 
``` 
+0

我无法重现你的错误......我的工作系统,Ubuntu的LTS 16.04对所有的罚款。其余的软件包与我的系统相同。 –

+0

在'render'和''knit''中运行'Sys.getenv()'可能会有所帮助。寻找差异,特别是在“PATH”和任何“LIB”相关变量中。 – r2evans

+0

@ r2evans更新了所需信息的问题。 –

回答

0

你知道你在使用哪个Java吗?我不知道足够的关于Java知道如果我的经验可能会有所帮助,但是,当我试图重现你的错误,我指着这个网站:

https://support.apple.com/kb/DL1572?locale=en_US

,我下载并安装了遗留Java OS X 10.11 El Capitan,OS X 10.10 Yosemite,OS X 10.9 Mavericks,OS X 10.8 Mountain Lion和OS X 10.7 Lion。这样做是否能解决你的错误?

我正在使用Sierra 10.12.3,RStudio 1.0.136,rJava_0.9-8 MacBook Pro。

+0

我正在使用Java版本8更新121(来自https:/ /www.java.com/en/download/installed8.jsp)。前一段时间,我遇到了一些与RJava相关的问题,并将这个传统的Java 6作为提议的解决方案记住,但是我在解决了这些问题后,从http://stackoverflow.com/questions/30738974/rjava-load-error-in-rstudio -R-后升级到OSX,优胜美地。我不认为这是一个Java问题,因为这些功能在编织范围之外很好地工作。 –

+0

关于它在RStudio针织按钮外使用的好处。 –

1

我和你有同样的问题。在Rstudio R控制台中加载rJava时没有问题,但在编织HTML文件时无法加载。和你一样,我也可以使用render()命令将rJava加载到“编织”上。我没有这样做几乎你没有测试广泛的水平,但是我最终能成功时加载rJava一个“编织”通过遵循commments由neilfws提供给您的链接 -

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文件不影响正常的控制台行为,但允许使用“编织编织“按钮。永远不知道为什么,但解决方案的作品。

3

运行在命令行下解决这个问题对我来说:

sudo R CMD javareconf