Почему rJava не работает на Ubuntu 14.04 с использованием OpenJDK 7?
Привет, у меня проблемы с пакетом rJava от cran.
Я установил
sudo apt-get install openjdk-7-jdk
sudo apt-get install r-cran-rjava
и пробежал
sudo R CMD javareconf
# Java interpreter : /usr/bin/java
# Java version : 1.7.0_55
# Java home path : /usr/lib/jvm/java-7-openjdk-amd64/jre
# Java compiler : /usr/bin/javac
# Java headers gen.: /usr/bin/javah
# Java archive tool: /usr/bin/jar
Затем я пытаюсь запустить R и загрузить rJava и получить следующую ошибку:
R
> library(rJava)
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/usr/lib/R/site-library/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or directory
Error: package or namespace load failed for ‘rJava’
Я на Ubuntu 14.04 64 бит и использую R версию 3.1.0 (2014-04-10) - "Spring Dance"
UPDATE: На самом деле это не относится к OpenJDK, я просто попробовал oracle java 8 и получил тот же результат. Также я нашел это обходное решение здесь, которое я неохотно использую, поскольку оно действительно является обходным путем и на самом деле не объясняет, почему это необходимо. На мой взгляд, система пакетов должна была справиться с этим. Похоже, что libjvm.so - проблема, и я нашел ее здесь.
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/jamvm/libjvm.so
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server/libjvm.so
/usr/lib/jvm/java-7-oracle/jre/lib/amd64/server/libjvm.so
и по какой-то причине rJava не находит их, несмотря на обновление с помощью sudo R CMD javareconf.
ОБНОВЛЕНИЕ 2: Сюжет загустеет: если я запустил R как sudo, это сработает.
Спасибо за указатели.
Ответы
Ответ 1
У меня была та же проблема с аналогичной конфигурацией (R 3.1.0, Ubuntu 12.10, 32-бит). Я нашел ответ на то, что LD_LIBRARY_PATH установлен правильно, как описано здесь:
Ошибка: не удалось загрузить установленные пакеты сейчас, за исключением того, что данный подкаталог является "клиентом", а не "сервером". Итак, теперь я настраиваю свою среду следующим образом:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/i386:$JAVA_HOME/jre/lib/i386/client
Ответ 2
Я смог решить эту проблему, используя этот ответ: fooobar.com/questions/46583/...
Это полезно, если у вас установлен Oracle java 7 или 8. Экспорт переменных в моем случае не был постоянным решением. Вы должны проверить, что R использует в качестве среды, выполнив:
Sys.getenv("JAVA_HOME")
а затем вы можете использовать эту среду, создав файл java.conf
on /etc/ld.so.conf.d/
, как указано в приведенной выше ссылке ответа.
Ответ 3
вы можете решить эту проблему, открыв rstudio в суперпользователе, например
sudo rstudio
затем внутри R run
install.packages('rJava')
Ответ 4
если вы используете oracle java, используйте следующую команду:
sudo R CMD javareconf
не поможет:
sudo R CMD javareconf **JAVA_HOME**=(path where java home is located)
Ответ 5
Я пробовал много вещей, но не работал. Затем я попытался использовать
sudo rstudio
а затем
install.packages('rJava')
Работает. Coool