2017-02-22 4 views
9

Вязаная кнопка Rstudio не в состоянии вязать rmarkdown (Rmd) файлы, которые включают пакет rJava. Однако, если я использую rmarkdown::render(), те же файлы Rmd визуализируются в html без проблем.Кнопка Rstudio Knit не загружается rJava

Я могу воспроизвести ошибку с помощью следующего кода:

содержание test.Rmd:

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

```{r} 
library(rJava) 
``` 

Нажатие кнопки Knit кнопки вернется:

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).

Использование RStudio версии 1.0.136, knitr 1.15.1, rmarkdown 1.3, rJava 0.9-8, R 3.3.2 в macOS Sierra 10.12.

Обновление: Добавление вывода Sys.getenv() по запросу @ r2evans. Существует разница в значении 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 изменяет re sult 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) 
``` 

Интересно, что с помощью render() в этом test2.Rmd чуть выше, и в том числе Sys.getenv() Теперь выводит две новые переменные, не существующие до и не присутствующих с помощью кнопки вязаную:

## DYLD_LIBRARY_PATH  /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/server 
## LD_LIBRARY_PATH  :@[email protected] 

Я не знаю, если это имеет смысл или нет, но я попробовал новый .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 16.04 LTS. Остальные пакеты такие же, как и в моей системе. –

+0

Может быть информативным запустить 'Sys.getenv()' как в 'render', так и' knit'ting. Ищите различия, особенно в «PATH» и любой из связанных с LIB переменных. – r2evans

+0

@ r2evans Обновленный вопрос с запрошенной информацией. –

ответ

0

Знаете ли вы, какую Java вы используете? Я не знаю достаточно о Java, чтобы узнать, что мой опыт может помочь, но, когда я пытался воспроизвести вашу ошибку, я указал на этот сайт:

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

где я скачал и установил унаследованный Java 6 runtime для 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. Выполняет ли это вашу ошибку?

Я работаю над MacBook Pro с Sierra 10.12.3, RStudio 1.0.136, rJava_0.9-8.

+0

Я использую обновление Java версии 8 Update 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 knit. –

1

У меня была такая же проблема, как и вы. Нет проблем с загрузкой rJava в консоли Rstudio R, но при загрузке HTML-файла возникает ошибка загрузки. Как и вы, я также смог загрузить rJava на «knit», используя команду render(). Я не делал почти обширный уровень тестирования, что вы сделали, но я в конце концов смог успешно загрузить 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 
Смежные вопросы