R: instalacja pakietu rJava nie powiodła się

116

Podczas instalacji rJavy za pomocą install.packages("rJava")polecenia otrzymuję następujący błąd:

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’

Mam zainstalowany pakiet Java JDK i java -versionzwraca:

$ java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)

Kiedy szukam błędu w Google, widzę, że inni mają ten sam problem, ale nie znajdują rozwiązania innego niż „zainstaluj cały JDK, a nie tylko JRE”, co zrobiłem.

Inną rzeczą, którą przeczytałem, było uruchomienie, sudo R CMD javareconfktóre działa całkiem szczęśliwie bez błędów.

Jakieś pomysły na czym polega mój problem?

[[EDYTUJ]] Minęło kilka miesięcy, odkąd miałem ten problem. Początkowo rozwiązałem to, edytując moje ścieżki w Javie, jak pokazano w odpowiedzi, którą zamieściłem poniżej. Niedawno napotkałem ten sam problem podczas nowej instalacji Ubuntu. Wypróbowałem zalecenie Dirka, aby użyć apt-get do zainstalowania pakietu rJava. Działało idealnie. To, czego początkowo nie doceniłem, to fakt, że instalowanie pakietów przy użyciu metody Ubuntu apt-get różni się zasadniczo od zwykłego ładowania tego samego pakietu przy użyciu funkcji install.packages () w R. Pakiety Ubuntu rozwiązują niektóre problemy, których nie zdawałem sobie sprawy lub nie doceniałem .

JD Long
źródło
odpowiedź można znaleźć również tutaj - stackoverflow.com/questions/12872699/…
Tejus Prasad
1
Po prostu komentuję tutaj moje przyszłe ja (gdy niewątpliwie wracam do tego pytania), że muszę uruchomić sudo R CMD javareconf, aby uzyskać apt-get install do rozpoznania mojego serwera rstudio.
Jim Crozier,
2
Dziewięć lat później i to niekończący się problem. Spotykam się z tym za każdym razem, gdy wykonuję nową instalację R. Coś się zmienia .. System operacyjny, wersja Rstudio, wersja R, wersja java, jdk, jre, jvm ... I zawsze jest to nowe rozwiązanie tego problemu. To śmieszne, że nie mogę odczytać pliku Excela bez tych wszystkich bzdur.
rmf
@rmf jest teraz wiele pakietów do czytania programu Excel, które nie wymagają języka Java. W przypadku prostych odczytów lubię, readxlale do pisania z powrotem w Excelu wolę openxlsx. Żadne nie wymaga rJava.
JD Long

Odpowiedzi:

114

Nie

apt-get install r-cran-rjava

było łatwiejsze? Mogłeś mnie zapytać w useR! :)

Dirk Eddelbuettel
źródło
3
Sednem Ubuntu i Debiana jest to, że nie powinieneś musieć google w pierwszej kolejności - powinno „po prostu działać” przy użyciu odpowiednich pakietów. Ułatw sobie życie i korzystaj z pakietów, gdzie tylko możesz. Zakładam, że korzystałeś też z pakietów Java Ubuntu?
Dirk Eddelbuettel
16
Dirk, zadajesz te pytania, jakbym miał pojęcie, co do diabła zrobiłem. Jeśli dobrze pamiętam, miałem problemy z zainstalowaniem Javy przy użyciu apt-get, więc zbudowałem ze źródeł i prawdopodobnie to jest źródło (wszystkie zamierzone kalambury) moich problemów. Oczywiście może to być po prostu zła karma.
JD Long
2
Jestem na R 2.15.3 ubuntu 12.04.2 64bit. kiedy update.packages()dostaję, zauważam, że jest plik rJava update. Instalacja z poziomu R kończy się niepowodzeniem. Kiedy apt-get install r-cran-rjavanie ma dostępnej aktualizacji. Dlaczego to się dzieje?
ECII
1
@DirkEddelbuettel, W moim Red Hat 'sudo yum install r-cran-rjava' nie działa. Mówi załadowane wtyczki: rhnplugin Ten system otrzymuje aktualizacje z RHN Classic lub RHN Satellite. Konfigurowanie procesu instalacji Brak dostępnego pakietu r-cran-rjava.
BigDataScientist,
1
@DirkEddelbuettel, chociaż podejście „to powinno po prostu działać” brzmi dla mnie świetnie, fakt, że tylko tak wiele pakietów jest wymienionych w r-cran-x jest powodem, dla którego ludzie używają „zwykłego” R (install.packages). Co więcej, po prostu skorzystałem z twojej rady, aby zrobić to za pomocą żurawia, co naprawdę nie pomaga, ponieważ R 3.x jest teraz głównym nurtem, podczas gdy pakiety w r-cran- są najwyraźniej przed R 3.x
Richard
77

Okazuje się, że mój problem dotyczy mojej JAVA_HOMEzmiennej środowiskowej. Tak, szokujące wiem. Moje początkowe ustawienie PATHi JAVA_HOMEwyglądało następująco:

export JAVA_HOME=/usr/lib/jvm/java-6-sun
export PATH=$PATH:$JAVA_HOME/bin

I dodałem, /jrewięc teraz wygląda to tak:

export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre
export PATH=$PATH:$JAVA_HOME/bin

Wszystko w Javie wydawało się działać dobrze bez /jrerJava, ale nie. Dziwny.

JD Long
źródło
5
Trzymając się prawdziwego znaczenia "przepełnienia stosu", tworząc nieskończoną pętlę pytanie -> odpowiedz - lubię to.
DrewConway
10
Dzięki. Robię wszystko, co w mojej mocy, aby przyszli użytkownicy Google mogli znaleźć odpowiedzi na swoje pytania dotyczące języka R!
JD Long
11
Po zmodyfikowaniu JAVA_HOME i ścieżki do pliku wykonywalnego Java stwierdziłem, że muszę uruchomić R CMD javareconf. W przeciwnym razie proces instalacji rJava nadal widzi stare lokalizacje nagłówków, bibliotek, itp.
Carlos Macasaet
1
Nic mi nie wyszło. Próbuję zainstalować „rJava” na serwerze Red Hat Linux, na którym obsługuję aplikacje R Shiny. Otrzymuję następujący BŁĄD: konfiguracja nie powiodła się dla pakietu „rJava” * podczas usuwania „/ usr / lib64 / R / library / rJava”. Wykonałem następujące kroki w celu wyeliminowania błędu. 1. Zaktualizowana Java w Linuksie sudo yum install java-1.7.0-openjdk 2. Ustaw eksport HOME i 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. Ponowna konfiguracja Java sudo / usr / bin / R CMD javareconf
BigDataScientist
Tak, działa, 8-oraclezamiast tego użyłem wersji.
gunzapper
21

Dziękuję - Twoja sugestia dotycząca $JAVA_HOMEdoprowadzenia mnie do podobnego rozwiązania:

prompt$ unset JAVA_HOME

przed odwołaniem się do R.

Chris Pudney
źródło
1
unset JAVA_HOME (bez znaku dolara)
Vladtn
1
Tak, to rozwiązało mój problem. Czy możesz wyjaśnić dlaczego? Dzięki
MichaelZ
usuń ustawienia JAVA_HOME i ustaw CLASSPATH = $ CLASSPATH: / usr / lib64 / R / share / java
42n4
14

Tak to robię:

W systemie Linux (Ubuntu 16.04)

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

w R:

install.packages("rJava")
Jim Chen
źródło
1
dzięki ... Musiałem zainstalować coś o nazwie rcdk w R, które spadło, ponieważ java nie działała. Twoja obejście rozwiązało problem (Ubuntu 18.04)
user1945827
Naprawdę się cieszę, że mogę pomóc!
Jim Chen
11

To działało dla mnie na Ubuntu 12.04 i R w wersji 3.0

cd /usr/lib/jvm/java-6-sun-1.6.0.26/include

to jest katalog zawierający jni.h

Następnie utwórz miękki link do innego wymaganego pliku nagłówkowego (jestem zbyt leniwy, aby dowiedzieć się, jak uwzględnić więcej niż jeden katalog w opcji JAVA_CPPFLAGS poniżej):

sudo ln -s linux/jni_md.h .

Wreszcie

sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/include
KevinH
źródło
1
sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/includerozwiązał problem za mnie.
Moustafa Alzantot
… I dodałbym echo $JAVA_HOMEna wszelki wypadekjava-6-sun nie był to twój dokładny katalog.
izomorfizmów
7

poniżej jedna z moich odpowiedzi w innym poście - błąd: nie można w tej chwili załadować zainstalowanych pakietów
(dotyczy to również tego pytania)

Użytkownicy systemu Linux (Ubuntu): jeśli masz zainstalowaną wersję oracle-java (7/8) . Będzie w tej lokalizacji /usr/lib/jvmi sudodostęp jest wymagany.

Utwórz plik /etc/ld.so.conf.d/java.confz następującymi wpisami:

/usr/lib/jvm/java-8-oracle/jre/lib/amd64
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server

(Zastąp java-8-oracle na java-7-oracle w zależności od wersji Java)

Następnie:

sudo ldconfig

Uruchom ponownie RStudio, a następnie zainstaluj pakiet rJava.

Tejus Prasad
źródło
1
Wypróbowałem wiele rozwiązań z różnym skutkiem, ale jest to pierwsze rozwiązanie, z którym się spotkałem, które wydaje się odporne (tj. Nie wymaga powtarzania tych samych 5 kroków za każdym razem, gdy uruchamiam R).
SamWN
4

Uruchomiony R pod Gentoo na AMD64. Zaktualizowałem do wersji 2.12.0

Wersja R 2.12.0 (2010-10-15) Copyright (C) 2010 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platforma: x86_64-pc-linux-gnu (64-bit) i te brzydkie wiadomości poszły z dala.

Jan Vandermeer

Jan Vandermeer
źródło
2

Próbowałem zainstalować openjdk-7- *, ale nadal miałem problemy z instalacją rJavy. Okazuje się, że po ponownym uruchomieniu komputera nie było żadnego problemu.

więc

sudo apt-get install openjdk-7-*


RESTART after installing java, then try to install package "rJava" in R
Vahid Mirjalili
źródło
2

Pakiet rJava szuka /usr/lib/jvm/default-java/folderu. Ale nie jest dostępny domyślnie. Ten folder ma dowiązanie symboliczne do domyślnej wersji Java skonfigurowanej dla systemu.

Aby aktywować domyślną java, zainstaluj następujące pakiety:

sudo apt-get install default-jre default-jre-headless

Testowano na ubuntu 17.04 z CRAN R 3.4.1

Gustavo Garcia
źródło
2

To, co zadziałało, to zmiana JAVA_HOME z pliku /usr/lib/R/etc/javaconf

I pierwszy sprawdzane co było moja wersja Java włączona: sudo update-alternatives --config java. W moim przypadku tak byłojava-8-oracle

Otworzyłem plik /usr/lib/R/etc/javaconfi zastąpiłem default-javago java-8-oracle:

${JAVA_HOME=/usr/lib/jvm/default-java}

zastąpiony przez :

${JAVA_HOME=/usr/lib/jvm/java-8-oracle}

I wtedy sudo R CMD javareconf

Zrestartowałem RStudio i mogłem zainstalować rJava.

Kevin Zarca
źródło
1

to, co robię, jest tutaj:

  1. w /etc/apt/sources.list dodaj:

    deb http://ftp.de.debian.org/debian sid main

Uwaga: rjava powinna być najnowszą wersją

2 uruchom: sudo apt-get update sudo apt-get install r-cran-rjava

Po zaktualizowaniu starej wersji rjava można zainstalować rhdfs_1.0.8.

user3119404
źródło
1

Napotkałem ten sam problem podczas korzystania z systemu Windows 10. Rozwiązałem problem, stosując następującą procedurę

  1. Pobierz Javę ze strony https://java.com/en/download/windows-64bit.jsp dla 64-bitowych Windows \ Zainstaluj ją
  2. Pobierz zestaw programistyczny Java ze strony https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html dla 64-bitowego systemu Windows \ Zainstaluj go
  3. Następnie kliknij prawym przyciskiem myszy ikonę „Ten komputer” na pulpicie \ Właściwości \ Zaawansowane ustawienia systemu \ Zaawansowane \ Zmienne środowiskowe \ W obszarze Zmienne systemowe wybierz Ścieżka \ Kliknij Edytuj \ Kliknij Nowy \ Kopiuj i wklej ścieżki „C: \ Program Files \ Java \ jdk1 .8.0_201 \ bin ”i„ C: \ Program Files \ Java \ jre1.8.0_201 \ bin ”(bez cudzysłowu) \ OK \ OK \ OK

Uwaga : jdk1.8.0_201 i jre1.8.0_201 zostaną zmienione w zależności od wersji Java Development Kit i Java

  1. W oknie Zmienne środowiskowe przejdź do Zmienne użytkownika dla użytkownika \ Kliknij Nowa \ Umieść nazwę zmiennej jako „JAVA_HOME” i wartość zmiennej jako „C: \ Program Files \ Java \ jdk1.8.0_201 \ bin” \ Naciśnij OK

Aby sprawdzić instalację, otwórz CMD \ Type javac \ Naciśnij Enter i wpisz java \ naciśnij enter. Pojawi się wprowadź opis obrazu tutaj

W RStudio uruchom

Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jdk1.8.0_201")

Uwaga : jdk1.8.0_201 zostanie zmieniony w zależności od wersji Java Development Kit

Teraz możesz bez problemu zainstalować i załadować pakiet rJava.

Bappa Das
źródło
0

Problem polegał na tym, że rJava nie zainstalowała się w RStudio( Version 1.0.136). Poniższe działały dla mnie ( macOS Sierra version 10.12.6) (znalezione tutaj ):

Krok 1: Pobierz i zainstaluj javaforosx.dmgz tutaj

Step-2: Następnie uruchom polecenie z wewnątrz RStudio:

install.packages("rJava", type = 'source')
Nilesh Ingle
źródło
-2

Napotkałem podobny problem w Ubuntu 16.04 i mogłem go rozwiązać, tworząc folder o nazwie „default-java” /usr/lib/jvmi kopiując do niego całą zawartość pliku /usr/lib/jvm/java-8-oracle. Zdecydowałem się na takie rozwiązanie, ponieważ poprawianie zmiennej środowiskowej JAVA_HOME okazało się bezużyteczne.

ilya_kuzminov
źródło
1
Spowoduje to przerwanie default-jreinstalacji pakietu.
Gustavo Garcia