J'ai récemment "mis à niveau" d'OSX Mountain Lion vers Yosemite et de R 3.1.3 à 3.2. Immédiatement après la mise à niveau, lorsque j'ai ouvert R ou RStudio, un message contextuel m'informant que je devais installer Java 6. De plus, le chargement de rJava
ou de tout paquet dépendant de rJava (par exemple, xlsx
) a provoqué le blocage de RStudio (R également écrasé lorsque j’ai essayé en ouvrant le R.app
directement).
Après avoir essayé quelques correctifs trouvés sur Stack Overflow et ailleurs (plus de détails ci-dessous), le chargement de rJava
ou de tout package dépendant de rJava
ne provoque plus le blocage de R, mais le résultat de l'erreur suivante:
library(rJava)
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so':
dlopen(/Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib
Referenced from: /Library/Frameworks/R.framework/Versions/3.2/Resources/library/rJava/libs/rJava.so
Reason: image not found
Error: package or namespace load failed for ‘rJava’
Cependant, si j'invoque R depuis la ligne de commande puis que je charge rJava
ou tout package dépendant de rJava
, cela semble fonctionner (ou du moins je ne reçois aucun message d'erreur).
J'ai essayé plusieurs solutions, dont certaines à quelques reprises, et je ne me souviens plus très bien de ce que j'ai fait dans quel ordre (je ne savais pas que ce serait un tel bourbier et je ne gardais pas vraiment la trace). , mais voici l'essentiel:
Ajout de ce qui suit à mon .bash_profile
(par cette SO réponse ):
export Java_HOME = "/ usr/libexec/Java_home -v 1.8"
export LD_LIBRARY_PATH = $ Java_HOME/jre/lib/server
Java reconfiguré à partir de la ligne de commande comme suit:
Sudo R CMD javareconf -n
Vérifié options("Java.home")
et découvert que cela a été défini sur NULL
. J'ai essayé de le définir comme suit (pour cette SO question ):
options ("Java.home" = "/ Bibliothèque/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contenu/Accueil/jre")
Installation du dernier kit de développement Java et réinstallation de rJava
à partir des sources (je ne me souviens plus de l'endroit où j'ai trouvé celui-ci).
À un moment donné, tout en essayant toutes ces solutions, j'ai pu charger rJava
sans planter R, mais le message d'erreur ci-dessus a été affiché. En outre, lorsque je quitte RStudio, il semble se fermer normalement, mais un message «RStudio s’arrête inopinément» s’affiche, indiquant que le programme s’est écrasé lors de la fermeture.
J'ai finalement décidé d'installer Java pour OS X 2014-001 (Java 6), car il me semblait qu'il me manquait d'options. Maintenant, lorsque j'ai ouvert R ou RStudio, le message contextuel "Ce logiciel a besoin de Java 6" n'apparaît plus. Cependant, le message d'erreur .onLoad failed in loadNamespace() for 'rJava'
était encore affiché.
En relisant certains articles que j’avais déjà consultés, j’ai remarqué une autre réponse SO que j’avais manquée auparavant, qui recommandait d’ouvrir RStudio avec le code de ligne de commande suivant, qui donne à RStudio le chemin correct à utiliser. Java:
LD_LIBRARY_PATH = $ (/ usr/libexec/rép_base Java)/jre/lib/server: ouvre -a RStudio
Cela a ouvert une fenêtre RStudio et j'ai également pu charger rJava
et les paquets qui en dépendent sans obtenir d'erreur.
Enfin, j'ai essayé de lancer R à partir de la ligne de commande (ce que je n'avais jamais fait auparavant). Il s'avère que sur la ligne de commande, le chargement de rJava
ou de tout package dépendant de rJava
fonctionne et ne génère aucune erreur.
Donc, je peux maintenant faire fonctionner rJava
si j'ouvre RStudio à partir de la ligne de commande avec le code qui donne le chemin Java à RStudio (comme indiqué ci-dessus). Cependant, j'aimerais trouver un moyen de résoudre le problème sous-jacent, quel qu'il soit, afin que RStudio puisse être ouvert de la manière habituelle sur Mac, sans nécessiter de kludge en ligne de commande. Je crains également qu'une ancienne version de Java installée ne cause des problèmes par la suite.
Quelqu'un at-il des idées sur la façon de diagnostiquer et de résoudre ce problème?
J'ai eu le même problème et suis passé par les mêmes étapes que vous. La dernière étape pour autoriser le démarrage de RStudio via Finder/Spotlight consistait à lier libjvm.dylib à/usr/local/lib:
Sudo ln -f -s $(/usr/libexec/Java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
Le drapeau -f
est ajouté pour forcer le remplacement du fichier/lien existant
Sur OSX El Capitan 10.11, l’utilisateur n’a pas l’autorisation d’écrire dans/usr/lib. Alors, utilisez plutôt la commande suivante:
Sudo ln -s $(/usr/libexec/Java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
Vous pouvez charger explicitement libjvm.dylib, en l’utilisant comme
dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/jre/lib/server/libjvm.dylib')
library(rJava)
Sur macOS High Sierra (10.13.1) et Java version 9, vous devez utiliser un chemin d'accès JVM légèrement différent (notez le dossier jre
manquant dans le chemin d'accès par rapport aux instructions des versions précédentes de Java):
Sudo ln -f -s $(/usr/libexec/Java_home)/lib/server/libjvm.dylib /usr/local/lib
Vous devez également informer R de la machine virtuelle Java:
MY_R_VERSION=$(Rscript -e "cat(with(R.version, sprintf('%s.%s', major, substring(minor, 1, 1))))")
ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/$MY_R_VERSION/Resources/lib/
La commande suivante fonctionne:
Sudo ln -s $(/usr/libexec/Java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
Après cela, dans RStudio, le chargement de rJava se fait par le chargement du paquet "xlsx".
library("xlsx")
P.S. Environnement # 1: Mac OS X El Capitan 10.11.3+ avec RStudio 0.99.491+ et R 3.2.3+. (J'ai maintenant testé cela aussi sur macOS Sierra (10.12) et R.3.3.1.)
P.S. # 2 Je trouve que openxlsx
est beaucoup plus rapide et ne repose pas sur Java pour fonctionner. J'utilise donc ce paquet. J'espère que cela aide les autres.
Voici comment je l'ai configuré pour qu'il fonctionne correctement sur deux Mac exécutant Mac OS X El Capitan (10.11.6):
Désinstallez 'rJava' en lançant les commandes suivantes dans une fenêtre de terminal:
Rscript -e 'remove.packages("rJava")'
Sudo Rscript -e 'remove.packages("rJava")'
Téléchargez et installez le logiciel Java à partir d’Oracle: https://www.Java.com/fr/download/mac_download.jsp
Ajoutez les lignes suivantes à /Users/<userid>/.bashrc
en utilisant votre éditeur favori:
# Set Java_HOME so rJava package can find it
export Java_HOME=$(/usr/libexec/Java_home -v 1.8)/jre
Fermez et redémarrez toutes les fenêtres de terminal, R et RStudio (pour enregistrer les modifications apportées à .bashrc
).
Exécutez la commande suivante dans une fenêtre de terminal:
Sudo ln -sf $(/usr/libexec/Java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
Exécutez la commande suivante dans une fenêtre de terminal:
Sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'
Vous devriez pouvoir utiliser CRAN rJava sans avoir à recompiler rJava ni effectuer aucune étape supplémentaire en reliant la bibliothèque partagée au répertoire de bibliothèque R frameworks.
Sudo ln -s $(/usr/libexec/Java_home)/jre/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Libraries
Voici les étapes faciles pour cela:
Ouvrez R et installez rJava avec cette commande:
install.packages ("rJava", dépendances = TRUE, type = "source")
Le problème d’image introuvable correspond à une nouvelle installation sur OSX High Sierra avec le dernier JDK Java SE 10.
J'ai été en mesure de résoudre le problème de chemin avec rJava en utilisant le correctif trouvé sur la page des problèmes de rJava Github: https://github.com/s-u/rJava/issues/78
R CMD javareconf Java_CPPFLAGS = -I/Système/Bibliothèque/Frameworks/JavaVM.framework/En-têtes
Vérifiez l'emplacement du fichier libjvm.dylib.
Essayez ceci, dans mon cas cela a fonctionné:
dyn.load('/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/lib/server/libjvm.dylib')
library(rJava)
J'ai parcouru tous les dépannages que j'ai pu trouver, puis j'ai installé jdk-11.0.1_osx-x64_bin.dmg à partir de: téléchargements Oracle
Tout fonctionnait parfaitement après cela.
Vérifiez la version de la bibliothèque qui n'a pas été chargée lors de l'exécution de la bibliothèque ('rJava') et faites-la correspondre à la version Java que vous devez installer.
Peut-être une autre réponse simple qui ne touche pas votre système de fichiers:
$ install_name_tool -add_rpath /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/server /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
(Remplacez jdk1.8.0_131.jdk
par votre chemin JDK.)
Cette ligne ci-dessous a résolu le même problème que je rencontrais avec le paquetage rJava
comme certains autres dans cette discussion. Je suis sûr qu'il y a plus d'une solution à ce problème et je les remercie sincèrement pour leurs contributions, car parfois, une ligne comme celle ci-dessous permet de gagner beaucoup de temps pour aller à la corbeille!
Sudo ln -s $(/usr/libexec/Java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
Vous pouvez télécharger ici l'ancienne version 6 de Java pour El Capitan: https://support.Apple.com/kb/DL1572?viewlocale=en_US&locale=en_US Après cela, le package rJava fonctionne pour moi.
Exécutez ce qui suit sur la ligne de commande: Sudo R CMD javareconf
Plusieurs solutions ci-dessus l'ont mentionné, mais elles suggèrent également de supprimer et de réinstaller par la suite le package rJava
. J'ai trouvé ces étapes supplémentaires inutiles.