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/