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 rJava
ou 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.app
directement).
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 rJava
ou tout package qui en dépend rJava
ne 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 rJava
ou 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é à
rJava
partir 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 rJava
sans 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 rJava
et 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 rJava
ou tout autre package qui dépend de rJava
fonctionne et ne génère aucune erreur.
Donc, je peux maintenant me mettre rJava
au 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 Capitan
solution ci-dessous est utile dès que les RStudio
charges rJava
sont 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 RStudio
astuce, 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.