R: установка пакета rJava не удалась - PullRequest
102 голосов
/ 22 июля 2010

При установке 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 решают некоторые проблемы, которые я не осознавал или не ценил ,

Ответы [ 16 ]

103 голосов
/ 24 июля 2010

Не было бы

apt-get install r-cran-rjava

проще?Вы могли бы спросить меня на useR! :)

72 голосов
/ 22 июля 2010

Оказывается, моей проблемой была проблема с моей переменной окружения 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 не будет. Странный.

20 голосов
/ 06 декабря 2010

Спасибо - ваше предложение о $JAVA_HOME привело меня к аналогичному решению:

prompt$ unset JAVA_HOME

перед вызовом R.

15 голосов
/ 05 марта 2015

Я столкнулся с той же проблемой, и она сработала после запуска следующих команд.

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

11 голосов
/ 25 июня 2013

Это сработало для меня в 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
7 голосов
/ 02 декабря 2015

ниже - один из моих ответов на другой пост - ошибка: не удалось загрузить установленные пакеты прямо сейчас
(это также относится к этому вопросу)

Для 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.

5 голосов
/ 23 октября 2018

Вот как я это делаю:

В Linux (Ubuntu 16.04)

sudo apt-get install default-jre
sudo apt-get install default-jdk
sudo R CMD javareconf

в R:

install.packages("rJava")
4 голосов
/ 02 ноября 2010

Запуск R под Gentoo на AMD64. Я обновился до R 2.12.0

R версия 2.12.0 (2010-10-15) Copyright (C) 2010 Фонд статистических вычислений R ISBN 3-900051-07-0 Платформа: x86_64-pc-linux-gnu (64-разрядная версия) и эти противные сообщения ушли.

Ян Вандермер

2 голосов
/ 11 марта 2018

Для меня сработало изменение 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.

2 голосов
/ 03 июля 2017

Пакет 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

...