2015-12-10 2 views
11

Я попытался решить это, используя предыдущие вопросы/ответы на SO, но без каких-либо успехов. Итак, вот моя проблема.Установка rJava

Я использую RStudio on и Ubuntu (14.04), и я попытался обновить rJava из источников и в процессе, которым я смог его потерять.

Я попытался установить его снова, используя,

install.packages("rJava") 

который возвратил следующее сообщение об ошибке,

configure: error: One or more Java configuration variables are not set. 
Make sure R is configured with full Java support (including JDK). Run 
R CMD javareconf 
as root to add Java support to R. 

If you don't have root privileges, run 
R CMD javareconf -e 
to set all Java-related variables and then install rJava. 

ERROR: configuration failed for package ‘rJava’ 
* removing ‘/home/darren/R/x86_64-pc-linux-gnu-library/3.2/rJava’ 
Warning in install.packages : 
    installation of package ‘rJava’ had non-zero exit status 

Итак, я пошел к терминалу и напечатал,

sudo R CMD javareconf 

который также дал следующую ошибку:

trying to compile and link a JNI program 
detected JNI cpp flags : 
detected JNI linker flags : -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm 
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG  -fpic -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c conftest.c -o conftest.o 
conftest.c:1:17: fatal error: jni.h: No such file or directory 
#include <jni.h> 
       ^
compilation terminated. 
make: *** [conftest.o] Error 1 
Unable to compile a JNI program 


JAVA_HOME  : /usr/lib/jvm/default-java 
Java library path: 
JNI cpp flags : 
JNI linker flags : 
Updating Java configuration in /usr/lib/R 
Done. 

Я пытался отслеживать эти ссылки, one и two, но они, похоже, не разрешили мою проблему; есть еще ссылки на SO, но я не уверен, какой из них следует соблюдать. Я также не установил и повторно установил RStudio через Ubuntu Software Center, но это не имело никакого значения.

Может ли кто-нибудь еще помочь?

Вкратце, я хочу, чтобы иметь возможность использовать RStudio с rJava снова без его уничтожения других применений Java (таких как jmol).

+0

Вы пробовали SUDO APT-получить установку г-КРАН-rjava? – bluefish

+1

Вам не следует искать с помощью тегов [R] или [rjava], а искать способы установки java на вашем компьютере. –

+0

@bluefish yes, «r-cran-rjava - это уже самая новая версия». – user1945827

ответ

26

У вас, похоже, не установлен JDK. Вам нужно будет по крайней мере

sudo apt-get install openjdk-7-jdk 

затем повторно запустить

sudo R CMD javareconf 

Убедитесь, что вы не установлен JAVA_HOME вручную - он будет обнаружен автоматически. Затем вы должны увидеть примерно следующее:

$ sudo R CMD javareconf 
Java interpreter : /usr/bin/java 
Java version  : 1.7.0_91 
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 

trying to compile and link a JNI program 
detected JNI cpp flags : -I$(JAVA_HOME)/../include 
detected JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm 
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -I/usr/lib/jvm/java-7-openjdk-amd64/jre/../include  -fpic -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c conftest.c -o conftest.o 
gcc -std=gnu99 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o conftest.so conftest.o -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm -L/usr/lib/R/lib -lR 


JAVA_HOME  : /usr/lib/jvm/java-7-openjdk-amd64/jre 
Java library path: $(JAVA_HOME)/lib/amd64/server 
JNI cpp flags : -I$(JAVA_HOME)/../include 
JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm 
+0

Этот ответ сработал, и это не помешало моему другому java-файлу java. Можете ли вы отредактировать его с объяснением, почему это сработало, а другие - нет? – user1945827

+0

Это решение работает, потому что оно устанавливает новый JDK в дополнение к JDK OpenJDK и Oracle, которые у вас уже есть. Команда также изменяет java по умолчанию на этот OpenJDK7, который совместим с вашей версией jmol. Другие существующие JDK имеют Java 8, которые не совместимы с jmol. – biocyberman

4

Сначала я бы рекомендовал установить Rstudio со своего сайта: https://www.rstudio.com/products/rstudio/download/ (то есть Rstudio 64bit: https://download1.rstudio.org/rstudio-0.99.489-amd64.deb). Это не решает проблему напрямую, но помогает избежать других ошибок с Rstudio.

Об этой ошибке, если вы хотите установить JDK. Я не думаю, что команда java -version может определить, установлен ли JDK. Вы должны проверить пакет самого JDK, или на основании сообщения об ошибке, выполните следующие действия:

locate jni.h Выходные данные должны соответствовать или совместимым с JAVAHOME, например:

/usr/lib/jvm/java-7-openjdk-amd64/include/jni.h 
/usr/lib/jvm/java-7-oracle/include/jni.h   

Update 1: R CMD javareconf ищет файл jni.h под $(JAVA_HOME)/include У вас установлен JDK, но очень вероятно, что вы используете java-каталог по умолчанию для JRE-каталога, поэтому произошла ошибка.

Вы можете увидеть, где default-java действительно указывает на, выполнив следующую команду:

jRealDir=$(readlink -f /usr/lib/jvm/default-java) 
echo $jRealDir 
# sample correct output: /usr/lib/jvm/jdk1.8.0_65 
# or /usr/lib/jvm/java-8-oracle if you default to Oracle's 
# now check jni.h 
ls -l $jRealDir/include/jni.h 
# sample expected output: 
# /usr/lib/jvm/jdk1.8.0_65/include/jni.h 

Если команда ls не удалось, вы должны настроить таким образом, чтобы javareconf (и позже rJava) можно использовать Java из JDK не от JRE. У вас есть два варианта:

Метод 1: Сделать это общесистемный

Это удобно, но может осуществлять другую программу как один вы упомянули jmol.Но не беспокойтесь, это можно вернуть, просто запустите команду и выберите старый. Выполните следующую команду и выбрать реж, который имеет JDK:

sudo update-alternatives --config java 

После этого теста, как jmol работает, если он работает нормально, то congrat. Теперь вы готовы проверить rJava. Если нет, то попробуйте второй метод ниже

Способ 2: Сделайте это для R только

поставить это в .Rprofile под вашей домашней директории

Sys.setenv(JAVA_HOME = '/usr/lib/jvm/jdk1.8.0_65') 
# this set JAVA_HOME for R to correct java home dir. 

После обновления или создания .Rprofile Перезапустите R в Rstudio. R CMD javareconf может по-прежнему сбой в этом случае, но он должен быть ОК, если вы запустите его с Shell под меню Tools Rstudio.

Что касается установки или Rstudio из резервной копии Ubuntu. Для получения rJava это не повлияло бы. Опять же, я рекомендую установить Rstudio для своей домашней страницы, потому что новая версия также имеет некоторые приятные функции (то есть лучше автозаполнение, которое мне больше всего нравится).

+0

Итак, что вы делаете из следующего? java -version java version "1.8.0_66" Рабочая среда Java (TM) SE Runtime Environment (сборка 1.8.0_66-b17) 64-разрядная виртуальная машина Java HotSpot TM (сборка 25.66-b17, смешанный режим) и найдите jni .h /usr/lib/jvm/java-6-openjdk-amd64/include/jni.h /usr/lib/jvm/java-8-oracle/include/jni.h /usr/lib/jvm/jdk1.8.0_65/include/jni.h и имеет ли значение, что я повторно установил RStudio через программный центр, а не как описано? – user1945827

+0

@ user1945827 проверить обновление 1 моего ответа. – biocyberman

+0

jRealDir = $ (readlink -f/usr/lib/jvm/default-java) echo $ jRealDir/usr/lib/jvm/java-7-openjdk-amd64, тогда ls -l $ jRealDir/include/jni.h дает ls: невозможно получить доступ /usr/lib/jvm/java-7-openjdk-amd64/include/jni.h: Нет такого файла или каталога. Но я попытался перейти к методу 2, но не смог найти .Rprofile. Я попробовал ls ~/.R *, который дал, /home/darren/.RData /home/darren/.Rhistory Спасибо, пока ... что дальше? – user1945827

12

Что не так с sudo apt-get install r-cran-rjava?

См. for example this earlier answer и вопрос/нить вокруг него.

Для установки с нуля вы все еще можете быть намного хуже, чем начиная с sudo apt-get build-dep r-cran-rjava. Это даст вам JDK, соответствующий вашей версии Ubuntu.

+0

Вопрос был «upgrade rJava from sources», а не «Я хочу работать rJava»;) –

+0

Я вижу. Исправлено соответственно: –

+0

sudo apt-get install r-cran-rjava [sudo] Чтение списков пакетов ... Готово Строительство дерева зависимостей Чтение информации о состоянии ... Сделано r-cran-rjava - это уже самая новая версия. 0 обновлено, 0 вновь установлено, 0 удалено и 7 не обновлено. – user1945827

0

Я имел дело с этой точной проблемой, ничто в этой теме или другом подобном не разрешило ее. Я на Ubuntu 16.04, вот как я получил его на работу:

apt-get install openjdk-9-jdk rm -rf /usr/lib/jvm/default-java ln -s /usr/lib/jvm/java-9-openjdk-amd64/ /usr/lib/jvm/default-java

Смежные вопросы