Libjvm.so: невозможно открыть файл общих объектов: нет такого файла или каталога
Попытка установить пакет rJava на R, на моем 14.10 ubuntu, используя этот код
if (!require(rJava)) install.packages('rJava')
появилось несколько ошибок, связанных с java, включая jni-проблемы, после переустановки jdk и попытки повторного запуска того же кода получить эту ошибку
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/usr/local/lib/R/site-library/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or directory
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/usr/local/lib/R/site-library/rJava’
Warning in install.packages :
installation of package ‘rJava’ had non-zero exit status
The downloaded source packages are in
‘/tmp/RtmpfFjrp0/downloaded_packages’
Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :
there is no package called ‘rJava’
искали решения, чтобы найти практически всех, предлагающих (для x64) выполнить эти команды
export LD_LIBRARY_PATH=/usr/lib/jvm/java-8-oracle/lib/amd64:/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server
sudo R CMD javareconf
но это не сработало, есть ли что-нибудь еще, что я могу сделать? Я предоставлю все необходимые данные.
Ответы
Ответ 1
Я получал ту же ошибку, когда пытался загрузить rJava в RStudio.
Следующее решение работало для меня
1) sudo rstudio-server stop
2) export LD_LIBRARY_PATH=/usr/lib/jvm/jre/lib/amd64:/usr/lib/jvm/jre/lib/amd64/default
3) sudo rstudio-server start
После выполнения вышеописанных шагов я смог успешно выполнить следующие шаги в RStudio
> library("DBI")
> library("rJava")
> library("RJDBC")
Ответ 2
Чтобы решить эту проблему,
Ответ 3
в случае, если ничего из этого не работает, попробуйте это и поблагодарите меня позже (общий ответ):)
R CMD javareconf -e
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_LD_LIBRARY_PATH
Ответ 4
-
Я решил аналогичную проблему, выполнив следующую команду каждый раз, когда я хочу открыть RStudio. Перейдите в папку, содержащую исполняемый файл rstudio, откройте терминал и введите:
LD_LIBRARY_PATH =/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Содержание/Главная/jre/lib/server: open -a rstudio
Конечно, вы должны изменить путь в соответствии со своей версией Java.
-
Если предыдущее решение не работает, попробуйте прочитать эту статью:
http://allanino.me/blog/programming/installing-some-r-packages/.
-
Если это решение не работает, последний шанс - установить rJava
компиляцию из исходного кода.
Ответ 5
Если кто-то сейчас придет сюда, попробуйте следующий подход:
Шаги:
-
Найдите свое местоположение R. Он будет храниться в rsession-ld-library-path
в rserver.conf
файле. Или просто выполнив which R
. Обычно это местоположение /usr/lib64/R/lib
или /usr/lib64/microsoft-r/3.3/lib64/R/lib
-
Найдите файл libjvm.so
, который обычно находится в пути usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server
, в зависимости от того, какой вы используете. Зайдите в среду $JAVA_HOME.
-
Создайте символическую ссылку, используя ln -s
sudo ln -s /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so /usr/lib64/microsoft-r/3.3/lib64/R/lib/libjvm.so
-
Перезапустить сервер R
Ответ 6
Проверьте, указывает ли $JAVA_HOME
на правильное местоположение
echo $JAVA_HOME
Я использую openjdk, однако $JAVA_HOME
указывал на какую-то несуществующую папку oracle-java.
После исправления $JAVA_HOME
запустите
sudo R CMD javareconf
Проверьте вывод. Java headers gen.
следует указать на /usr/bin/javah
. Например:
[email protected] ~ $ sudo R CMD javareconf
Java interpreter : /usr/lib/jvm/default-java/bin/java
Java version : 11.0.1
Java home path : /usr/lib/jvm/default-java
Java compiler : /usr/lib/jvm/default-java/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/lib/jvm/default-java/bin/jar
После этого я могу установить и загрузить пакет rJava
.
Ответ 7
Ну, как @user3673 указал это решение для меня изменить следующую строку в /usr/lib/R/etc/ldpaths
и /usr/lib/R/etc/ldpaths
:
: ${R_JAVA_LD_LIBRARY_PATH=${JAVA_HOME}/lib/amd64/server}
этим:
: ${R_JAVA_LD_LIBRARY_PATH=${JAVA_HOME}/jre/lib/amd64/server}
Ответ 8
Мы используем AZUL. Я мог видеть, что ZST не добавлен должным образом. После добавления ZST все работает нормально.