установить rJava - настроить: ошибка: один или несколько типов JNI отличаются от соответствующего собственного типа

Я столкнулся с этой проблемой при установке rJava на R3.0.1: «configure: error: один или несколько типов JNI отличаются от соответствующего собственного типа»

Подробное сообщение прилагается ниже. Я искал похожие проблемы, но моя проблема немного сложнее, и многие предлагаемые решения либо не работали, либо я не мог попробовать, потому что я работаю на сервере, на котором у меня нет доступа на запись в системные библиотеки.

ОС: Linux 2.6.18-348.6.1.el5 # 1 SMP Вт, 21 мая, 15:44:27 EDT 2013 x86_64 x86_64 x86_64 GNU / Linux (информация предоставляется путем ввода "uname -a", извините, я не мог понять эту информацию)

R: R3.0.1, я загрузил исходный код, поместил его в свой домашний каталог и построил R из исходного кода.

rJava: я запустил install.packages ("rJava") ', во время установки получил:

=========================
проверка поддержки Java в R ... присутствует:
интерпретатор: '/ usr / bin / java '
архиватор:' / usr / bin / jar '
компилятор:' / usr / bin / javac '
подготовка заголовка .:' / usr / bin / javah '
флаги cpp:' - Я / usr / lib / jvm / java-1.7.0-openjdk-1.7.0.9.x86_64 / jre /../ include -
I / usr / lib / jvm / java-1.7.0-openjdk-1.7. 0.9.x86_64 / jre /../ include / linux '
java libs:' -L / usr / lib / jvm / java-1.7.0-openjdk-1.7.0.9.x86_64 / jre / lib / amd64 / se
rver -ljvm '
проверка возможности компиляции программ JNI ... да
проверка типов данных JNI ... configure: error: Один или несколько типов JNI отличаются от соответствующих собственных типов. Вам может потребоваться использовать нестандартные флаги компилятора или
другой компилятор, чтобы исправить это.
ОШИБКА: сбой конфигурации для пакета 'rJava'
* удаление '/home/me/R-3.0.1/library/rJava'

==================================

Поскольку я могу получить доступ к серверу только удаленно, у меня нет доступа на запись во что-либо за пределами моего домашнего каталога / home / me.

Любая информация будет принята с благодарностью!


person Ziqi    schedule 30.08.2013    source источник
comment
Привет, мне помогла наша команда администраторов локального сервера, и я подумал, что мне будет полезно обновить. Проблема заключалась в том, что когда я создавал пакет rJava, он запутался между версией Java по умолчанию на сервере (usr / lib) и пользовательской версией, которую я установил в своей / home области. Последний был установлен файлом .bashsrc, в котором есть строки вроде: ‹br› export JAVA_HOME = / home / me / jdk1.7.0_04 / bin / java ‹br› export PATH = $ PATH: /home/me/jdk1.7.0 _04 / bin, поэтому, как только я удалил эти две строки, rJava установится правильно.   -  person Ziqi    schedule 30.08.2013


Ответы (3)


Я столкнулся с той же проблемой, пытаясь install.packages("rJava") в R версии 3.0.2, пока я пытался установить как обычный пользователь (Linux, Debian). Не было проблем с запуском install.packages("rJava") от имени пользователя root. Затем попытка library(rJava) сработала для root, но не для меня как пользователя:

Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/usr/usr.local.original.Debian/lib/R/site-library/rJava/libs/rJava.so':
  libjvm.so: cannot open shared object file: No such file or directory

Эта проблема требовала добавления переменных среды JAVA_HOME и LD_LIBRARY_PATH в ~/.login (следуя инструкциям на Проблема с установкой пути к среде Java в Ubuntu (libjvm.so: невозможно открыть файл общих объектов: такого файла или каталога нет)):

setenv JAVA_HOME /usr/lib/jvm/java-7-oracle/
setenv LD_LIBRARY_PATH $JAVA_HOME/jre/lib/amd64:$JAVA_HOME/jre/lib/amd64/server

# For c-shell; for bash, it would have to be:
export JAVA_HOME=/usr/lib/jvm/java-7-oracle/
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64:$JAVA_HOME/jre/lib/amd64/server

Итак, вам нужно будет попросить системного администратора установить для вас rJava, затем установить переменные среды и, конечно же, установить свои собственные .libPaths() в R, например, чтобы найти rJava.

person user3238459    schedule 26.01.2014

Я столкнулся с той же проблемой на моем Mac OSx El Capitan. Я попытался обновить пути / окружения java, используемые R, используя "R CMD javareconf" без каких-либо эффектов.

Наконец, я увидел, что при запуске "R CMD javareconf" путь к моей библиотеке Java: на выходе был пуст. Копнув дальше, я выяснил, что мой JAVA_HOME был установлен неправильно, как указано здесь https://stackoverflow.com/a/3311983 . Мне пришлось добавить дополнительный / jre в путь JAVA_HOME.

person Abhimanu Kumar    schedule 09.10.2016
comment
Большое спасибо, у меня это сработало на El Capitan. После того, как я установил его, у меня возникла ошибка при загрузке пакета, которую я решил, выполнив: sudo ln -s $ (/ usr / libexec / java_home) /jre/lib/server/libjvm.dylib / usr / local / lib, как в этот SO вопрос. - person rapture; 09.05.2017

Используя linux, в частности 64-битный Gentoo, я решил добавить следующую строку в /etc/env.d/20java-config

LD_LIBRARY_PATH="/etc/java-config-2/current-system-vm/jre/lib/amd64:/etc/java-config-2/current-system-vm/jre/lib/amd64/server"

потом

  • Запустите env-update
  • источник / etc / profile
  • запустите rstudio (или, если вы используете меню графического интерфейса, выйдите из системы и войдите в систему, чтобы загрузить среду)

Вышеупомянутое изменение должно быть сделано пользователем root, но затем оно будет применено к пользователям без полномочий root, которые используют ту же систему, при следующем входе в систему.

По сути, тест rJava conf не смог найти libjvm.so, программа conftest компилируется, но не связывается :)

person Lyall Pearce    schedule 09.04.2017
comment
С 2021 года это больше не работает (на 64-битном Gentoo). - person mschilli; 05.03.2021