R: ошибка установки пакета rJava

116

При установке 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)

Когда я ищу ошибку в Google, я вижу, что у других такая же проблема, но они не находят другого решения, кроме «установить весь JDK, а не только JRE», что я сделал.

Другая вещь, которую я прочитал, - это запуск, sudo R CMD javareconfкоторый работает довольно успешно, без ошибок.

Есть идеи, в чем моя проблема?

[[EDIT]] Прошло несколько месяцев с тех пор, как у меня возникла эта проблема. Первоначально я решил эту проблему, отредактировав свои пути Java, как показано в ответе, который я опубликовал ниже. Недавно я столкнулся с той же проблемой при новой установке Ubuntu. Я попробовал рекомендацию Дирка использовать apt-get для установки пакета rJava. Это сработало отлично. Первоначально мне не удалось оценить то, что установка пакетов с использованием метода Ubuntu apt-get принципиально отличается от простой загрузки того же пакета с помощью install.packages () внутри R. Пакеты Ubuntu решают некоторые проблемы, которые я не осознавал и не ценил. ,

JD Long
источник
ответ можно найти и здесь - stackoverflow.com/questions/12872699/…
Tejus Prasad 02
1
Просто сделаю здесь комментарий к себе в будущем (когда я, несомненно, снова вернусь к этому вопросу), что мне нужно запустить sudo R CMD javareconf, чтобы установка apt-get install была распознана моим rstudio-сервером.
Джим Крозье
3
Девять лет спустя, и это бесконечная проблема. Я сталкиваюсь с этим каждый раз, когда делаю новую установку R. Что-то меняется ... ОС, версия Rstudio, версия R, версия java, jdk, jre, jvm .... И это всегда новое решение для ее решения. Смешно, что я не могу читать файл Excel без всей этой чуши.
rmf
@rmf в настоящее время существует ряд пакетов чтения Excel, для которых не требуется Java. Мне нравится простое чтение, readxlно я предпочитаю писать в Excel openxlsx. Также не требуется rJava.
JD Long

Ответы:

114

не было бы

apt-get install r-cran-rjava

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

Дирк Эддельбюттель
источник
3
Суть Ubuntu и Debian в том, что вам вообще не нужно использовать Google - он должен «просто работать» с использованием подходящих пакетов. Сделайте свою жизнь проще и используйте пакеты, где можете. Полагаю, вы тоже использовали Java-пакеты Ubuntu?
Дирк Эддельбюттель,
16
Дирк, ты задаешь эти вопросы так, будто я понятия не имею, что, черт возьми, я сделал. Если я помню, у меня были проблемы с установкой Java с помощью apt-get, поэтому я создавал из исходников, и это, вероятно, источник (все каламбурные) моих проблем. Конечно, это может быть просто плохая карма.
JD Long
2
Я использую R 2.15.3 ubuntu 12.04.2 64bit. когда я update.packages()получаю, я замечаю, что есть файл rJava update. Установка из R не выполняется. Когда у меня apt-get install r-cran-rjavaнет доступных обновлений. Почему это происходит?
ECII
1
@DirkEddelbuettel, в моей Red Hat 'sudo yum install r-cran-rjava' не работает. Сообщает загруженные плагины: rhnplugin Эта система получает обновления от RHN Classic или RHN Satellite. Настройка процесса установки Нет доступного пакета r-cran-rjava.
BigDataScientist
1
@DirkEddelbuettel, хотя подход «он должен просто работать» звучит для меня великолепно, но тот факт, что в r-cran-x перечислено не так много пакетов, является причиной того, что люди используют «обычный» способ R (install.packages). Более того, я только что воспользовался вашим советом сделать это через кран, что действительно не помогает, поскольку R 3.x сейчас является мейнстримом, а пакеты в r-cran-, по-видимому, раньше R 3.x
Ричард
77

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

JD Long
источник
5
Сохранение истинного значения «переполнения стека» путем создания вопроса -> бесконечный цикл ответа --- мне это нравится.
DrewConway
10
Спасибо. Вношу свою лепту, чтобы будущие пользователи Google могли найти ответы на свои вопросы о R!
JD Long
11
После изменения JAVA_HOME и пути к исполняемому файлу java я обнаружил, что мне нужно запустить R CMD javareconf. В противном случае процесс установки rJava по-прежнему видит старые расположения заголовков, библиотек и т. Д.
Карлос Макасет
1
У меня ничего не получалось. Я пытаюсь установить «rJava» на сервер Red Hat Linux, где я обслуживаю некоторые приложения R Shiny. Я получаю следующую ОШИБКУ: сбой конфигурации для пакета 'rJava' * удаление '/ usr / lib64 / R / library / rJava'. Я проделал следующие шаги в процессе устранения ошибки. 1. Обновлена ​​Java в Linux sudo yum install java-1.7.0-openjdk 2. Установите HOME и PATH экспорт JAVA_HOME = / usr / lib / jvm / java-1.7.0-ibm-1.7.0.6.1.x86_64 / jre export PATH = $ PATH: $ JAVA_HOME / bin 3. Перенастроенный Java sudo / usr / bin / R CMD javareconf
BigDataScientist
Да, работает, я 8-oracleвместо этого использовал версию.
gunzapper
21

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

prompt$ unset JAVA_HOME

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

Крис Падни
источник
1
unset JAVA_HOME (без знака доллара)
Vladtn
1
Да, это устранило мою проблему. Не могли бы вы объяснить почему? Спасибо
MichaelZ
отключите JAVA_HOME и установите CLASSPATH = $ CLASSPATH: / usr / lib64 / R / share / java
42n4,
15

Вот как я заставляю это работать:

В Linux (Ubuntu 16.04)

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

в R:

install.packages("rJava")
Джим Чен
источник
1
спасибо ... Мне нужно было установить что-то под названием rcdk в R, которое упало, потому что java не работала. Ваша работа решила проблему (Ubuntu 18.04)
user1945827
11

Это сработало для меня на 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
KevinH
источник
1
sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/includeрешил проблему для меня.
Moustafa Alzantot
… И я бы добавил, echo $JAVA_HOMEесли java-6-sunэто не ваш точный каталог.
isomorphismes
7

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

Для пользователей 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.

Техус Прасад
источник
1
Я пробовал несколько решений с разной степенью успеха, но это первое решение, с которым я столкнулся, которое кажется устойчивым (т.е. не требует повторения одних и тех же 5 шагов каждый раз, когда я запускаю R).
SamWN
4

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

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

Ян Вандермер

Ян Вандермер
источник
2

Я попытался установить openjdk-7- *, но все равно у меня возникли проблемы с установкой rJava. Оказывается, после перезагрузки компьютера проблем не было.

так

sudo apt-get install openjdk-7-*


RESTART after installing java, then try to install package "rJava" in R
Вахид Мирджалили
источник
2

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

Густаво Гарсия
источник
2

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

Кевин Зарка
источник
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.

user3119404
источник
1

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

Баппа Дас
источник
0

Проблема заключалась в том, что rJava не устанавливался в RStudio( Version 1.0.136). Для меня сработало следующее ( macOS Sierra version 10.12.6) (найдено здесь ):

Шаг 1. Загрузите и установите javaforosx.dmgс здесь

Шаг 2: Затем запустите команду из RStudio:

install.packages("rJava", type = 'source')
Нилеш Ингл
источник
-2

Я столкнулся с подобной проблемой в Ubuntu 16.04 и смог решить ее, создав папку с именем «default-java» /usr/lib/jvmи скопировав в нее все содержимое файла /usr/lib/jvm/java-8-oracle. Я выбрал это решение, поскольку исправление переменной среды JAVA_HOME оказалось бесполезным.

ilya_kuzminov
источник
1
Это нарушит default-jreустановку пакета.
Густаво Гарсия