J'ai récemment "mis à jour" d'OSX Mountain Lion vers Yosemite et de R 3.1.3 vers 3.2. Immédiatement après la mise à niveau, lorsque j'ai ouvert R ou RStudio, j'ai reçu un message contextuel disant que je devais installer Java 6. De plus, le chargement rJavaou tout paquet qui dépend de rJava (par exemple xlsx) a causé le crash de RStudio (R a également planté quand j'ai essayé cela en ouvrant R.appdirectement).
Après avoir essayé quelques correctifs trouvés sur Stack Overflow et ailleurs (plus de détails ci-dessous), je suis à un point où le chargement rJavaou tout package qui en dépend rJavane provoque plus le plantage de R, mais entraîne 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'appelle R à partir de la ligne de commande et que je charge ensuite rJavaou tout package qui en dépend rJava, cela semble fonctionner (ou du moins je ne reçois aucun message d'erreur).
J'ai essayé un certain nombre de tentatives de corrections différentes, certaines à quelques reprises, et je ne me souviens pas exactement de ce que j'ai fait dans quel ordre (je ne savais pas que ce serait un tel bourbier et ne suivait pas vraiment) , mais voici l'essentiel:
Ajout de ce qui suit à mon
.bash_profile(par cette réponse SO ):export JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
export LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / serverJava reconfiguré à partir de la ligne de commande comme suit:
sudo R CMD javareconf -n
Vérifié
options("java.home")et découvert que ce paramètre était défini surNULL. J'ai essayé de le configurer comme suit (par cette question SO ):options ("java.home" = "/ Bibliothèque / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / jre")
Installé le dernier kit de développement Java et réinstallé à
rJavapartir de la source (je ne me souviens pas où j'ai trouvé celui-là).
À un moment donné, en essayant tout cela, j'ai pu charger rJavasans planter R, mais j'ai plutôt reçu le message d'erreur ci-dessus. De plus, lorsque je quitte RStudio, il semble se fermer normalement, mais un message "RStudio quitte inopinément" apparaît alors, indiquant que le programme s'est écrasé en essayant de se fermer.
J'ai finalement décidé d'installer Java pour OS X 2014-001 (Java 6), car je semblais manquer d'options. Maintenant, lorsque j'ai ouvert R ou RStudio, le message contextuel "Ce logiciel a besoin de Java 6" n'apparaissait plus. Cependant, je recevais toujours le .onLoad failed in loadNamespace() for 'rJava'message d'erreur ci-dessus.
En examinant certains des 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 vers java:
LD_LIBRARY_PATH = $ (/ usr / libexec / java_home) / jre / lib / server: ouvrir -a RStudio
Cela a ouvert une fenêtre RStudio et j'ai également pu charger rJavaet les packages qui en dépendent sans obtenir d'erreur.
Enfin, j'ai essayé d'exécuter R à partir de la ligne de commande (ce que je n'avais pas fait auparavant). Il s'avère que sur la ligne de commande, le chargement rJavaou tout autre package qui dépend de rJavafonctionne et ne génère aucune erreur.
Donc, je peux maintenant me mettre rJavaau travail si j'ouvre RStudio à partir de la ligne de commande avec le code qui donne à RStudio le chemin java (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 de Mac, sans avoir besoin d'un kludge de ligne de commande. Je crains également que l'installation d'une ancienne version de Java puisse causer des problèmes ultérieurement.
Quelqu'un a-t-il des idées sur la façon de diagnostiquer et de résoudre ce problème?
Yosemite, donc je ne suis pas sûr. Voir ci-dessous pour une réponse relative à El Capitan.
El Capitansolution ci-dessous est utile dès que les RStudiocharges rJavasont attendues.
otool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so d'obtenir une liste des bibliothèques partagées et comment elles sont résolues. Je ne sais pas comment découvrir le contenu d'exécution de @rpath.
LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudioastuce, mais cela ne fonctionne plus. J'ai écrit un article de blog concernant ce problème et j'y ai décrit ce problème. Je me demande si d'autres rencontrent ce problème aussi dans cette configuration ou si c'est de ma faute.