R: échec de l'installation du package rJava

116

Lors de l'installation de rJava à l'aide de la install.packages("rJava")commande, 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 JDK Java et java -versionrenvoie ce qui suit:

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

Lorsque je cherche l'erreur sur Google, je vois que d'autres ont le même problème mais ne trouvent pas de solution autre que "installer le JDK entier, pas seulement le JRE", ce que j'ai fait.

L'autre chose que j'ai lue était de courir sudo R CMD javareconfqui fonctionne assez heureusement sans erreurs.

Des idées sur mon problème?

[[EDIT]] Cela fait quelques mois que j'ai eu ce problème. J'avais initialement résolu cela en éditant mes chemins Java, comme illustré dans la réponse que j'ai publiée ci-dessous. J'ai récemment rencontré le même problème sur une nouvelle installation d'Ubuntu. J'ai essayé 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 packages à l'aide de la méthode apt-get d'Ubuntu est fondamentalement différente du simple chargement du même package à l'aide de install.packages () à l'intérieur de R. Les packages Ubuntu résolvent certains problèmes que je n'ai pas réalisé ou apprécié .

JD Long
la source
La réponse peut être trouvée ici aussi - stackoverflow.com/questions/12872699/…
Tejus Prasad
1
Je fais juste un commentaire ici à mon futur moi (pour quand je me retrouve sans aucun doute à cette question) que j'avais besoin d'exécuter sudo R CMD javareconf pour que l'installation apt-get soit reconnue mon serveur rstudio.
Jim Crozier
3
Neuf ans plus tard et c'est un problème sans fin. Je rencontre ça chaque fois que je fais une nouvelle installation de R. Quelque chose change .. OS, version Rstudio, version R, version java, jdk, jre, jvm .... Et c'est toujours une nouvelle solution pour le résoudre. C'est ridicule que je ne puisse pas lire un fichier Excel sans toutes ces conneries.
rmf
@rmf il existe maintenant un certain nombre de packages de lecture Excel qui ne nécessitent pas Java. Pour les lectures simples, j'aime readxlmais pour réécrire dans Excel, je préfère openxlsx. Aucun des deux ne nécessite rJava.
JD Long

Réponses:

114

Ne serait pas

apt-get install r-cran-rjava

ont été plus faciles? Vous auriez pu me demander à useR! :)

Dirk Eddelbuettel
la source
3
Le but d'Ubuntu et Debian est que vous ne devriez pas avoir à chercher sur Google en premier lieu - cela devrait "simplement fonctionner" en utilisant les paquets appropriés. Simplifiez-vous la vie et utilisez les packages là où vous le pouvez. Je suppose que vous avez également utilisé les packages Java d'Ubuntu?
Dirk Eddelbuettel
16
Dirk, vous posez ces questions comme si j'avais une idée de ce que j'ai fait. Si je me souviens bien, j'ai eu du mal à installer Java en utilisant apt-get alors j'ai construit à partir des sources et c'est probablement la source (tous les jeux de mots sont destinés) de mes problèmes. Bien sûr, cela pourrait être un mauvais karma.
JD Long
2
Je suis sur R 2.15.3 ubuntu 12.04.2 64bit. quand je update.packages()reçois, je remarque qu'il y a un fichier rJava update. L'installation depuis R échoue. Quand je n'ai apt-get install r-cran-rjavapas de mise à jour disponible. Pourquoi cela arrive-t-il?
ECII
1
@DirkEddelbuettel, Dans mon Red Hat 'sudo yum install r-cran-rjava' ne fonctionne pas. Dit les plugins chargés: rhnplugin Ce système reçoit des mises à jour de RHN Classic ou RHN Satellite. Configuration du processus d'installation Aucun package r-cran-rjava disponible.
BigDataScientist
1
@DirkEddelbuettel, alors que l'approche `` ça devrait juste marcher '' me semble bien, le fait que seuls autant de paquets soient répertoriés dans r-cran-x est la raison pour laquelle les gens utilisent la méthode R `` normale '' (install.packages). De plus, je viens de suivre votre conseil pour le faire via cran, ce qui n'aide vraiment pas car R 3.x est maintenant courant, tandis que les packages de r-cran- sont apparemment avant R 3.x
Richard
77

Il s'avère que mon problème était un problème avec ma JAVA_HOMEvariable d'environnement. Oui, choquant je sais. Mon réglage initial pour PATHet JAVA_HOMEressemblait à ceci:

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

Et j'ai ajouté /jredonc ça ressemble maintenant à ceci:

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

Tout en Java semblait fonctionner /jrecorrectement sans le mais rJava ne le ferait pas. Impair.

JD Long
la source
5
Garder la vraie signification de "débordement de pile" en créant une question -> réponse boucle infinie --- j'aime ça.
DrewConway
10
Merci. Faire ma part pour que les futurs utilisateurs de Google puissent trouver des réponses à leurs questions R!
JD Long
11
Après avoir modifié JAVA_HOME et le chemin d'accès à l'exécutable java, j'ai trouvé 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.
Carlos Macasaet
1
Rien n'a fonctionné pour moi. J'essaye d'installer "rJava" sur le serveur Red Hat Linux où je sers des applications R Shiny. J'obtiens l'ERREUR suivante: la configuration a échoué pour le paquet 'rJava' * suppression de '/ usr / lib64 / R / library / rJava'. J'ai suivi les étapes suivantes pour éliminer l'erreur. 1. Java mis à jour sous Linux sudo yum install java-1.7.0-openjdk 2. Définissez l'exportation HOME et 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. Java reconfiguré sudo / usr / bin / R CMD javareconf
BigDataScientist
Oui, cela fonctionne, j'ai utilisé la 8-oracleversion à la place.
gunzapper
21

Merci - votre suggestion $JAVA_HOMEme mène à une solution similaire:

prompt$ unset JAVA_HOME

avant d'invoquer R.

Chris Pudney
la source
1
unset JAVA_HOME (pas de signe dollar)
Vladtn
1
Oui, cela a résolu mon problème. Pouvez-vous expliquer pourquoi? Merci
MichaelZ
désarmer JAVA_HOME et définir CLASSPATH = $ CLASSPATH: / usr / lib64 / R / share / java
42n4
15

Voilà comment je le fais fonctionner:

Sous Linux (Ubuntu 16.04)

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

en R:

install.packages("rJava")
Jim Chen
la source
1
merci ... J'avais besoin d'installer quelque chose appelé rcdk dans R qui est tombé parce que java ne fonctionnait pas. Votre travail a résolu le problème (Ubuntu 18.04)
user1945827
Vraiment heureux de vous aider!
Jim Chen
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

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

sudo ln -s linux/jni_md.h .

finalement

sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/include
KevinH
la source
1
sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/includerésolu le problème pour moi.
Moustafa Alzantot
… Et j'ajouterais echo $JAVA_HOMEau cas où ce java-6-sunne serait pas votre répertoire exact.
isomorphismes
7

ci-dessous est l'une de mes réponses sur un autre message - erreur: impossible de charger les packages installés pour le moment
(ceci est également pertinent pour cette question)

Pour les utilisateurs Linux (Ubuntu): Si vous avez installé oracle-java (7/8) . Ce sera à cet endroit /usr/lib/jvmetsudo accès est requis.

Créez le fichier /etc/ld.so.conf.d/java.confavec les entrées suivantes:

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

(Remplacez java-8-oracle par java-7-oracle selon votre version java)

Ensuite:

sudo ldconfig

Redémarrez RStudio, puis installez le package rJava.

Tejus Prasad
la source
1
J'ai essayé plusieurs solutions avec plus ou moins de succès, mais c'est la première solution que j'ai rencontrée qui semble résiliente (c'est-à-dire ne nécessite pas les mêmes 5 étapes à répéter à chaque fois que je lance R).
SamWN
4

Exécution de R sous Gentoo sur un AMD64. Je suis passé à R 2.12.0

R version 2.12.0 (2010-10-15) Copyright (C) 2010 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Plate-forme: x86_64-pc-linux-gnu (64 bits) et ces messages embêtants ont disparu une façon.

Jan Vandermeer

Jan Vandermeer
la source
2

J'ai essayé d'installer openjdk-7- * mais j'ai toujours eu des problèmes pour installer rJava. Il s'avère qu'après avoir redémarré mon ordinateur, il n'y a eu aucun problème.

alors

sudo apt-get install openjdk-7-*


RESTART after installing java, then try to install package "rJava" in R
Vahid Mirjalili
la source
2

Le package rJava recherche le /usr/lib/jvm/default-java/dossier. Mais ce n'est pas disponible par défaut. Ce dossier a un lien symbolique pour le java par défaut configuré pour le système.

Pour activer le Java par défaut, installez les packages suivants:

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

Testé sur ubuntu 17.04 avec CRAN R 3.4.1

Gustavo Garcia
la source
2

Ce qui a fonctionné pour moi, c'est de changer JAVA_HOME du fichier /usr/lib/R/etc/javaconf

J'ai d' abord vérifié ce qui était ma version de Java activée: sudo update-alternatives --config java. Dans mon cas, c'étaitjava-8-oracle

J'ai ouvert le fichier /usr/lib/R/etc/javaconfet remplacé default-javapar java-8-oracle:

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

remplacé par :

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

Puis sudo R CMD javareconf

J'ai redémarré RStudio et j'ai pu ensuite installer rJava.

Kevin Zarca
la source
1

ce que je fais est ici:

  1. dans /etc/apt/sources.list, ajoutez:

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

Remarque: le rjava doit être la dernière version

2 exécuter: sudo apt-get update sudo apt-get install r-cran-rjava

Une fois la mise à jour de l'ancienne version de rjava, vous pouvez installer rhdfs_1.0.8.

user3119404
la source
1

J'étais confronté au même problème en utilisant Windows 10. J'ai résolu le problème en utilisant la procédure suivante

  1. Téléchargez Java sur https://java.com/en/download/windows-64bit.jsp pour Windows 64 bits \ Installez-le
  2. Téléchargez le kit de développement Java depuis https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html pour Windows 64 bits \ Installez-le
  3. Cliquez ensuite avec le bouton droit sur l'icône «Ce PC» dans le bureau \ Propriétés \ Paramètres système avancés \ Avancé \ Variables d'environnement \ Sous Variables système, sélectionnez Chemin \ Cliquez sur Modifier \ Cliquez sur Nouveau \ Copier et coller les chemins "C: \ Program Files \ Java \ jdk1 .8.0_201 \ bin »et« C: \ Program Files \ Java \ jre1.8.0_201 \ bin »(sans guillemets) \ OK \ OK \ OK

Remarque : jdk1.8.0_201 et jre1.8.0_201 seront modifiés en fonction de la version du kit de développement Java et de Java

  1. Dans la fenêtre Variables d'environnement, allez dans Variables utilisateur pour l'utilisateur \ Cliquez sur Nouveau \ Mettez le nom de la variable comme "JAVA_HOME" et la valeur de la variable comme "C: \ Program Files \ Java \ jdk1.8.0_201 \ bin" \ Appuyez sur OK

Pour vérifier l'installation, ouvrez CMD \ Tapez javac \ Appuyez sur Entrée et tapez java \ Appuyez sur Entrée Il affichera entrez la description de l'image ici

Dans RStudio exécuter

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

Remarque : jdk1.8.0_201 sera modifié en fonction de la version du kit de développement Java

Vous pouvez maintenant installer et charger le package rJava sans aucun problème.

Bappa Das
la source
0

Le problème était que rJava ne s'installe pas dans RStudio( Version 1.0.136). Ce qui suit a fonctionné pour moi ( macOS Sierra version 10.12.6) (trouvé ici ):

Étape 1: Téléchargez et installez à javaforosx.dmgpartir d' ici

Étape 2: Ensuite, exécutez la commande depuis RStudio:

install.packages("rJava", type = 'source')
Nilesh Ingle
la source
-2

J'ai rencontré un problème similaire sur Ubuntu 16.04 et j'ai pu le résoudre en créant un dossier nommé "default-java" /usr/lib/jvmet en y copiant tout le contenu du fichier /usr/lib/jvm/java-8-oracle. J'ai opté pour cette solution car la correction de la variable d'environnement JAVA_HOME s'est avérée inutile.

ilya_kuzminov
la source
1
Cela interrompra l' default-jreinstallation du package.
Gustavo Garcia