R: установка пакета rJava не удалась
При установке rJava с помощью install.packages("rJava")
Команда я получаю следующую ошибку:
checking Java support in R... present:
interpreter : '/usr/bin/java'
archiver : '/usr/bin/jar'
compiler : '/usr/bin/javac'
header prep.: '/usr/bin/javah'
cpp flags : '-I/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../include -I/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../include/linux'
java libs : '-L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/amd64/server -L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/amd64 -L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../lib/amd64 -L -L/usr/java/packages/lib/amd64 -L/usr/lib64 -L/lib64 -L/lib -L/usr/lib -ljvm'
checking whether JNI programs can be compiled... yes
checking JNI data types... configure: error: One or more JNI types differ from the corresponding native type. You may need to use non-standard compiler flags or a different compiler in order to fix this.
ERROR: configuration failed for package ‘rJava’
У меня установлен Java JDK и java -version
возвращает следующее:
$ java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
При поиске ошибки я вижу, что другие сталкиваются с той же проблемой, но не находят решения, кроме как "установить весь JDK, а не только JRE", что я и сделал.
Другая вещь, которую я прочитал, состояла в том, чтобы бежать sudo R CMD javareconf
который работает довольно счастливо без ошибок.
Есть идеи, в чем моя проблема?
[[EDIT]] Прошло несколько месяцев с тех пор, как у меня была эта проблема. Сначала я решил эту проблему, отредактировав свои пути Java, как показано в ответе, который я разместил ниже. Недавно я столкнулся с той же проблемой при новой установке Ubuntu. Я попробовал рекомендацию Дирка использовать apt-get для установки пакета rJava. Это сработало отлично. Изначально я не смог оценить, что установка пакетов с использованием метода apt-get Ubuntu принципиально отличается от простой загрузки одного и того же пакета с помощью install.packages() внутри R. Пакеты Ubuntu решают некоторые проблемы, которые я не осознавал или не ценил,
18 ответов
Оказывается, моя проблема была проблемой с моим JAVA_HOME
переменная окружения. Да, шокирующая, я знаю. Мои начальные настройки для PATH
а также JAVA_HOME
выглядело так:
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export PATH=$PATH:$JAVA_HOME/bin
И я добавил /jre
так что теперь это выглядит так:
export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre
export PATH=$PATH:$JAVA_HOME/bin
Все в Java, казалось, работало нормально без /jre
но rJava не будет. Странный.
Не было бы
apt-get install r-cran-rjava
было проще? Вы могли бы спросить меня в useR!:)
Вот как я заставляю это работать:
В Linux (Ubuntu 16.04)
sudo apt-get install default-jre
sudo apt-get install default-jdk
sudo R CMD javareconf
в R:
install.packages("rJava")
Спасибо - ваше предложение о $JAVA_HOME
привести меня к аналогичному решению:
prompt$ unset JAVA_HOME
до вызова Р.
Я столкнулся с той же проблемой, и она работала после запуска команд ниже.
export JAVA_LIBS="$JAVA_LIBS -ldl"
R CMD javareconf
Подробности см. На http://www-01.ibm.com/support/knowledgecenter/SSPT3X_3.0.0/com.ibm.swg.im.infosphere.biginsights.install.doc/doc/install_install_r.html
Это работало для меня на Ubuntu 12.04 и R версии 3.0
cd /usr/lib/jvm/java-6-sun-1.6.0.26/include
это каталог, в котором есть jni.h
Затем создайте мягкую ссылку на другой необходимый заголовочный файл (мне лень выяснить, как включить несколько каталогов в опцию JAVA_CPPFLAGS ниже):
sudo ln -s linux/jni_md.h .
в заключение
sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/include
Ниже один из моих ответов на другой пост - ошибка: не могу загрузить установленные пакеты прямо сейчас
(это также относится к этому вопросу)
Для пользователей Linux(Ubuntu): Если у вас установлен oracle-java (7/8). Это будет в этом месте /usr/lib/jvm
а также sudo
доступ требуется.
Создать файл /etc/ld.so.conf.d/java.conf
со следующими записями:
/usr/lib/jvm/java-8-oracle/jre/lib/amd64
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server
(Замените java-8-oracle на java-7-oracle в зависимости от вашей версии Java)
Затем:
sudo ldconfig
Перезапустите RStudio, а затем установите пакет rJava.
Запуск R под Gentoo на AMD64. Я обновился до R 2.12.0
Версия R 2.12.0 (2010-10-15) Copyright (C) 2010 Платформа R Foundation для статистических вычислений ISBN 3-900051-07-0: x86_64-pc-linux-gnu (64-разрядная версия), и эти неприятные сообщения пошли далеко.
Ян Вандермейер
Я попытался установить openjdk-7-*, но у меня все еще были проблемы с установкой rJava. Оказывается, после того, как я перезагрузил компьютер, тогда не было никаких проблем вообще.
так
sudo apt-get install openjdk-7-*
RESTART after installing java, then try to install package "rJava" in R
Что сработало для меня, так это изменение JAVA_HOME из файла /usr/lib/R/etc/javaconf
Сначала я проверил, какая версия Java включена: sudo update-alternatives --config java
, В моем случае это было java-8-oracle
Я открыл файл /usr/lib/R/etc/javaconf
и заменил default-java
от java-8-oracle
:
${JAVA_HOME=/usr/lib/jvm/default-java}
заменен на:
${JAVA_HOME=/usr/lib/jvm/java-8-oracle}
А потом sudo R CMD javareconf
Я перезапустил RStudio и смог установить rJava.
Пакет rJava ищет /usr/lib/jvm/default-java/
папка. Но это не доступно по умолчанию. В этой папке есть символическая ссылка для java по умолчанию, настроенная для системы.
Чтобы активировать Java по умолчанию, установите следующие пакеты:
sudo apt-get install default-jre default-jre-headless
Протестировано на Ubuntu 17.04 с CRAN R 3.4.1
Что я делаю здесь:
в /etc/apt/sources.list добавьте:
deb http://ftp.de.debian.org/debian sid main
Примечание: rjava должен быть последней версией
2 запуска: sudo apt-get update sudo apt-get install r-cran-rjava
Как только обновите старую версию rjava, тогда можете установить rhdfs_1.0.8.
Я заработал, загрузив: https://cran.r-project.org/src/contrib/rJava_0.9-8.tar.gz и выполнив команду R CMD install rJava_0.9-8.tar.gz.
В Arch Linux мне нужно было установить
openjdk-src
чтобы получить рабочий путь JNI.
Другими словами, это те пакеты, которые мне нужно было установить перед
sudo R CMD javareconf
успешно работает:
local/jdk-openjdk 14.0.2.u12-1
OpenJDK Java 14 development kit
local/jre-openjdk 14.0.2.u12-1
OpenJDK Java 14 full runtime environment
local/jre-openjdk-headless 14.0.2.u12-1
OpenJDK Java 14 headless runtime environment
local/openjdk-src 14.0.2.u12-1
OpenJDK Java 14 sources
Я столкнулся с той же проблемой при использовании Windows 10. Я решил проблему с помощью следующей процедуры
- Загрузите Java с https://java.com/en/download/windows-64bit.jsp для 64-битных окон \ Установите его
- Загрузите комплект разработки Java по https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html для 64-разрядных окон \ Установите его
- Затем щелкните правой кнопкой мыши значок "Этот компьютер" на рабочем столе \ Свойства \ Дополнительные параметры системы \ Дополнительно \ Переменные среды \ В разделе "Системные переменные" выберите "Путь" \ "Редактировать" \ "Создать" \ "Копировать" и вставьте пути "C:\Program Files\Java\jdk1"..8.0_201\bin "и" C:\Program Files\Java\jre1.8.0_201\bin "(без кавычек) \OK\OK\OK
Примечание: jdk1.8.0_201 и jre1.8.0_201 будут изменены в зависимости от версии комплекта разработки Java и Java
- В окне "Переменные среды" перейдите в раздел "Пользовательские переменные для пользователя". Нажмите "Создать" \ "Перевести имя переменной как" JAVA_HOME ", а значение переменной - как" C:\Program Files\Java\jdk1.8.0_201\bin "\ Нажмите" ОК ".
Чтобы проверить установку, откройте CMD\ Введите javac \ Нажмите Enter и введите java \ нажмите enter Появится
В RStudio запустить
Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jdk1.8.0_201")
Примечание: jdk1.8.0_201 будет изменено в зависимости от версии комплекта разработки Java
Теперь вы можете без проблем установить и загрузить пакет rJava.
Проблема была в том, что rJava не устанавливается в RStudio
(Version 1.0.136
). Следующее сработало у меня (macOS Sierra version 10.12.6
) (найдено здесь):
Шаг 1: Загрузите и установите javaforosx.dmg
отсюда
Шаг 2: Затем запустите команду из RStudio:
install.packages("rJava", type = 'source')
предполагая, что у вас есть привилегии sudo, а не в Ubuntu, где диспетчер пакетов упрощает это, опробованные варианты предыдущих ответов, нашел этот драгоценный камень в блоге Databricks для nonUbuntu (https://kb.databricks.com/r/install-rjava-rjdbc-libraries.html )
- установлен jdk
sudo apt-get install openjdk-8-jdk
2) проверьте для меня путь к libjvm.so ->
grep -r libjvm
"вывод: двоичный файловый сервер / libjvm.so соответствует <<<<<<<<»
- сделать настройку Java
sudo R CMD javareconf
удалите пакет предыдущих версий и установите rJava из зеркала CRAN в Rstudio
перезапустить Rstudio
в Rstudio проверьте ссылку на libjvm.so
dyn.load('/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so')
library('rJava)
Я столкнулся с подобной проблемой в Ubuntu 16.04 и смог ее решить, создав папку с именем "default-java" в /usr/lib/jvm
и скопировать в него все содержимое /usr/lib/jvm/java-8-oracle
, Я выбрал это решение, так как исправление переменной среды JAVA_HOME оказалось бесполезным.