Изображение rJava отсутствует в Rstudio в OsX - PullRequest
0 голосов
/ 03 октября 2019

Когда я пытаюсь загрузить библиотеку ("rJava") в RStudio на OsX High Sierra, я получаю уже упоминавшуюся ошибку об отсутствии изображения:

Error: package or namespace load failed for 'rJava':
 .onLoad failed in loadNamespace() for 'rJava', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/Users/ognjenmilicevic/RPlay/Methylation_Mayo_Vesna_Garovic/libs/rJava/libs/rJava.so':
  dlopen(/Users/ognjenmilicevic/RPlay/Methylation_Mayo_Vesna_Garovic/libs/rJava/libs/rJava.so, 6): Library not loaded: /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/libjvm.dylib
  Referenced from: /Users/ognjenmilicevic/RPlay/Methylation_Mayo_Vesna_Garovic/libs/rJava/libs/rJava.so
  Reason: image not found

Я пытался перенастроить Java, но ошибкасохраняются:

$ R CMD javareconf
Java interpreter : /usr/bin/java
Java version     : 10.0.1
Java home path   : /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
Java compiler    : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar

trying to compile and link a JNI program
detected JNI cpp flags    : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin
detected JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
clang -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/include/darwin  -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include  -fPIC  -Wall -g -O2  -c conftest.c -o conftest.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o conftest.so conftest.o -L/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/lib/server -ljvm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation


JAVA_HOME        : /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
Java library path: $(JAVA_HOME)/lib/server
JNI cpp flags    : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin
JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
Updating Java configuration in /Library/Frameworks/R.framework/Resources
Done.

Удаление и переустановка пакета не помогает. Я попытался указать на свою версию, используя:

dyn.load('/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/lib/server/libjvm.dylib')

Ошибка сохраняется. Все это время работает в R, когда запускается как команда. Откуда берется путь "/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/libjvm.dylib" и как его изменить, чтобы он указывал на мою установку?

1 Ответ

0 голосов
/ 03 октября 2019

Похоже, у вас какая-то грязная установка или rJava.

Вы всегда можете проверить, какая версия Java использовалась (при сборке rJava), вызвав:

> otool -L /Library/Frameworks/R.framework/Resources/library/rJava/libs/rJava.so
/Library/Frameworks/R.framework/Resources/library/rJava/libs/rJava.so:
    rJava.so (compatibility version 0.0.0, current version 0.0.0)
    /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/libjvm.dylib (compatibility version 1.0.0, current version 1.0.0)
    /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libR.dylib (compatibility version 3.6.0, current version 3.6.0)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1259.11.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)

в вашем случае вам нужно позвонить

> otool -L /Users/ognjenmilicevic/RPlay/Methylation_Mayo_Vesna_Garovic/libs/rJava/libs/rJava.so

Убедитесь, что у вас установлена ​​эта версия Java: jdk-11.0.1.jdk. Если у вас его нет, и вы хотите установить rJava с текущей версией JDK - например: jdk-10.0.1.jdk, выполните следующие действия: http://www.owsiak.org/r-java-11-and-making-sure-you-can-load-rjava/

Кроме того, помните, что вmacOS, Java по умолчанию является самым новым. Это означает, что RStudio выберет версию с наибольшим номером - тот, который включен.

Вы можете отключить данную версию Java, вызвав

> cd /Library/Java/JavaVirtualMachines/jdk-11.0.4.jdk/Contents
> mv Info.plist Info.plist~

Приведенные выше команды сделают эту версию Java«невидимый» для macOS.

После того, как вы выполните шаги (как описано в связанной статье), вы сможете запускать Java с обоих: R и RStudio

> R

R version 3.6.1 (2019-07-05) -- "Action of the Toes"
Copyright (C) 2019 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin15.6.0 (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> library(rJava)
> .jinit()
> J("java.lang.System","getProperty","java.version")
[1] "11.0.3"
>

enter image description here

...