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

Что я делаю здесь:

  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. Я решил проблему с помощью следующей процедуры

  1. Загрузите Java с https://java.com/en/download/windows-64bit.jsp для 64-битных окон \ Установите его
  2. Загрузите комплект разработки Java по https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html для 64-разрядных окон \ Установите его
  3. Затем щелкните правой кнопкой мыши значок "Этот компьютер" на рабочем столе \ Свойства \ Дополнительные параметры системы \ Дополнительно \ Переменные среды \ В разделе "Системные переменные" выберите "Путь" \ "Редактировать" \ "Создать" \ "Копировать" и вставьте пути "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

  1. В окне "Переменные среды" перейдите в раздел "Пользовательские переменные для пользователя". Нажмите "Создать" \ "Перевести имя переменной как" 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 )

  1. установлен jdk
          sudo apt-get install openjdk-8-jdk

2) проверьте для меня путь к libjvm.so ->

          grep -r libjvm

"вывод: двоичный файловый сервер / libjvm.so соответствует <<<<<<<<»

  1. сделать настройку Java
          sudo R CMD  javareconf
  1. удалите пакет предыдущих версий и установите rJava из зеркала CRAN в Rstudio

  2. перезапустить Rstudio

  3. в 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 оказалось бесполезным.

Другие вопросы по тегам