121 votes

R : échec de l'installation du paquet rJava

Lorsque vous installez rJava en utilisant le install.packages("rJava") j'obtiens l'erreur suivante :

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’

J'ai installé le Java JDK et java -version renvoie ce qui suit :

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

En cherchant l'erreur sur Google, j'ai vu que d'autres personnes avaient le même problème, mais sans trouver de solution autre que "installer le JDK complet, pas seulement le JRE", ce que j'ai fait.

L'autre truc que j'ai lu, c'est qu'il faut courir sudo R CMD javareconf qui fonctionne sans problème et sans erreur.

Vous avez une idée de ce que peut être mon problème ?

[[EDIT]] Cela fait quelques mois que je n'ai pas eu ce problème. Je l'avais initialement résolu en modifiant mes chemins Java, comme illustré dans la réponse que j'ai postée ci-dessous. J'ai récemment rencontré le même problème sur une nouvelle installation Ubuntu. J'ai suivi la recommandation de Dirk d'utiliser apt-get pour installer le paquet rJava. Cela a parfaitement fonctionné. Ce que je n'ai pas compris au départ, c'est que l'installation de paquets à l'aide de la méthode apt-get d'Ubuntu est fondamentalement différente du chargement du même paquet à l'aide de install.packages() dans R. Les paquets Ubuntu résolvent certains problèmes dont je n'avais pas conscience ou que je n'appréciais pas.

0 votes

La réponse se trouve également ici - stackoverflow.com/questions/12872699/

1 votes

Je fais juste un commentaire ici à l'intention de mon futur moi (pour le jour où je me retrouverai sans doute à nouveau devant cette question) pour dire que j'ai dû exécuter sudo R CMD javareconf pour que l'installation apt-get soit reconnue par mon serveur rstudio.

4 votes

Neuf ans plus tard, c'est un problème sans fin. Je rencontre ce problème à chaque fois que je fais une nouvelle installation de R. Quelque chose change... OS, version de Rstudio, version de R, version de java, jdk, jre, jvm.... Et il y a toujours une nouvelle solution pour le résoudre. C'est ridicule que je ne puisse pas lire un fichier excel sans toutes ces conneries.

119voto

Dirk Eddelbuettel Points 134700

N'est-ce pas ?

apt-get install r-cran-rjava

aurait été plus facile ? Vous auriez pu me demander à useR ! :)

4 votes

L'intérêt d'Ubuntu et de Debian est que vous ne devriez pas avoir à chercher sur Google en premier lieu --- cela devrait "juste fonctionner" en utilisant les paquets appropriés. Facilitez-vous la vie et utilisez les paquets quand vous le pouvez. Je suppose que vous avez également utilisé les paquets Java d'Ubuntu ?

16 votes

Dirk, tu poses ces questions comme si j'avais la moindre idée de ce que j'ai fait. Si je me souviens bien, j'ai eu du mal à installer Java avec apt-get, j'ai donc construit à partir des sources et c'est probablement la source (sans jeu de mots) de mes problèmes. Bien sûr, ça pourrait être juste un mauvais karma.

0 votes

@DirkEddelbuettel : Pouvez-vous me dire comment résoudre ce même problème sous OpenSUSE ? Je ne suis ni familier avec OpenSUSE ni avec R.

78voto

JD Long Points 20477

Il s'avère que mon problème était un problème avec mon JAVA_HOME variable d'environnement. Oui, c'est choquant, je sais. Ma configuration initiale pour PATH y JAVA_HOME ressemblait à ça :

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

Et j'ai ajouté /jre donc ça ressemble maintenant à ça :

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

Tout en Java semblait fonctionner correctement sans le /jre mais pas rJava. C'est bizarre.

5 votes

Respecter la véritable signification de "stack overflow" en créant une boucle infinie question -> réponse - j'aime ça.

11 votes

Merci. Je contribue à faire en sorte que les futurs utilisateurs de Google puissent trouver des réponses à leurs questions sur la recherche documentaire !

11 votes

Après avoir modifié JAVA_HOME et le chemin vers l'exécutable java, j'ai constaté que je devais exécuter R CMD javareconf . Sinon, le processus d'installation de rJava voit toujours les anciens emplacements des en-têtes, des bibliothèques, etc.

21voto

Chris Pudney Points 101

Merci - votre suggestion concernant $JAVA_HOME m'a conduit à une solution similaire :

prompt$ unset JAVA_HOME

avant d'invoquer R.

1 votes

Unset JAVA_HOME (sans signe de dollar)

1 votes

Oui, cela a réglé mon problème. Pouvez-vous expliquer pourquoi ? Merci

0 votes

Annuler JAVA_HOME et définir CLASSPATH=$CLASSPATH:/usr/lib64/R/share/java

11voto

KevinH Points 11

Cela a fonctionné pour moi sur Ubuntu 12.04 et R version 3.0.

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

c'est le répertoire qui contient jni.h

Créez ensuite un lien logiciel vers un autre fichier d'en-tête requis (je suis trop paresseux pour trouver comment inclure plus d'un répertoire dans l'option JAVA_CPPFLAGS ci-dessous) :

sudo ln -s linux/jni_md.h .

Enfin

sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/include

1 votes

sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/include a résolu le problème pour moi.

0 votes

Et j'ajouterais echo $JAVA_HOME en cas java-6-sun n'est pas votre répertoire exact.

4voto

Jan Vandermeer Points 21

J'utilise R sous Gentoo sur un AMD64. J'ai mis à jour vers R 2.12.0.

R version 2.12.0 (2010-10-15) Copyright (C) 2010 The R Foundation for Statistical Computing (Fondation R pour le calcul statistique) ISBN 3-900051-07-0 Plate-forme : x86_64-pc-linux-gnu (64-bit) et ces messages embêtants ont disparu.

Jan Vandermeer

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X