rJava не выбирает правильную версию Java

Я уже давно борюсь с этой проблемой. Когда я устанавливаю rJava из R, он берет Java 1.6 вместо 1.8. Я использую MAC OS 10.8.5, и это шаги, которые я уже сделал.

Я установил R.
У меня есть Java 1.6 и 1.8 на моей машине.
Я переконфигурирую R из терминала, используя: sudo R CMD javareconf -n,
Вот как выглядит результат:

Интерпретатор Java: /usr/bin/java
Версия Java: 1.8.0_25
Домашний путь Java: /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre
Компилятор Java: /usr/bin/javac
Заголовки Java gen.: /usr/bin/javah
Инструмент для архивирования Java: /usr/bin/jar
Несистемная Java на OS X

пытаясь скомпилировать и связать программу JNI

обнаружены флаги cpp JNI: -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/darwin
обнаружены флаги компоновщика JNI: -L$(JAVA_HOME)/lib/server -ljvm
gcc -arch x86_64 -std=gnu99 -I/ Библиотека / Каркасы /R.framework/ Ресурсы / Включать -DNDEBUG -I/ Библиотека /Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/../include/darwin -I/usr/local/include    -fPIC  -mtune=core2 -g -O2  -c conftest.c -o conftest.o
gcc -arch x86_64 -std=gnu99 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/ Библиотека /Frameworks/R.framework/Resources/lib -L/usr/local/lib -L/usr/local/lib -o conftest.so conftest.o -L/ Библиотека / Java / JavaVirtualMachines / jdk1.8.0_25.jdk / Содержание / Главная /jre/lib/server -ljvm -F/ Библиотека /Frameworks/R.framework/.. -рамка R -Wl,-рамка -Wl,CoreFoundation


JAVA_HOME: /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre
Путь к библиотеке Java: $(JAVA_HOME)/lib/server
Флаги cpp JNI: -I $ (JAVA_HOME) /../ включать -I $ (JAVA_HOME) /../ включать / darwin
Флаги компоновщика JNI: -L $ (JAVA_HOME) / lib / server -ljvm

Затем я перешел к R и установил пакет rJava в качестве источника:install.packages("rJava", type="source")и я добираюсь до DONE(rJava)

затем, когда я проверяю версию с помощью:

библиотека (rJava)
.jinit()
.jcall("java/lang/System", "S", "getProperty", "java.runtime.version")

Я все еще получаю 1.6.0_25-b17 вместо 1.8

Пожалуйста, дайте мне знать, если вы знаете решение этой проблемы.

1 ответ

Последняя версия rJava исправила эту проблему. Я установил последнюю версию с сайта с помощью команды

install.packages("rJava",,"http://rforge.net/",type="source")

Теперь вывод с помощью вызова jvm выглядит так:

> library(rJava)
> .jinit()
> .jcall("java/lang/System", "S", "getProperty", "java.runtime.version")
[1] "1.7.0_75-b13"

Примечание: у меня установлена ​​Java 1.7 и 1.6, а не Java 1.8

В этом случае мне помогли две вещи (следующий совет: https://www3.ntu.edu.sg/home/ehchua/programming/howto/JDK_Howto.html).

  • Информирование Ubuntu об установке Java, которую вы хотите использовать.

Для этого я побежал:

$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk1.8.0_201/bin/java" 1

$ sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/jdk1.8.0_201/bin/javac" 1

$ sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/java/jdk1.8.0_201/bin/javaws" 1

с последующим

$ sudo update-alternatives --set java /usr/java/jdk1.8.0_201/bin/java

$ sudo update-alternatives --set javac /usr/java/jdk1.8.0_201/bin/javac

$ sudo update-alternatives --set javaws /usr/java/jdk1.8.0_201/bin/javaws

Тогда я мог наконец увидеть свою Java в альтернативах в

sudo update-alternatives --config java

где я выбрал недавно установленную Java. Потом я побежал

 sudo R CMD javareconf JAVA_HOME=/usr/java/jdk1.8.0_201/bin/
Другие вопросы по тегам