rJava erreur de chargement dans RStudio/R après la "mise à niveau" pour OSX Yosemite
j'ai récemment" amélioré " D'OSX Mountain Lion à Yosemite et de R 3.1.3 à 3.2. Immédiatement après la mise à niveau, quand J'ai ouvert R ou RStudio j'ai reçu un message pop-up disant que j'avais besoin d'installer Java 6. De plus, le chargement de rJava
ou de tout paquet qui dépend de rJava (par exemple, xlsx
) a causé un crash de RStudio (R s'est aussi crashé quand j'ai essayé cela en ouvrant directement R.app
).
après avoir essayé quelques corrections trouvées sur le débordement de la pile et ailleurs (plus de détails ci-dessous), je suis à un point où le chargement rJava
ou tout paquet qui dépend de rJava
ne provoque plus de crash 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'invoque R depuis la ligne de commande et que je charge ensuite rJava
ou n'importe quel paquet qui dépend de rJava
, cela semble fonctionner (ou du moins je ne reçois aucun message d'erreur).
j'ai essayé un certain nombre de correctifs différents, certains de 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 tenait pas vraiment compte), mais voici l'essentiel:
-
a ajouté ce qui suit à mon
.bash_profile
(par this SO answer ):export JAVA_HOME= "/ usr/libexec/java_home-v 1.8"
exportation LD_LIBRARY_PATH= $ JAVA_HOME/jre/lib / server -
reconfiguré java à partir de la ligne de commande comme suit:
sudo R CMD javareconf-n
-
a coché
options("java.home")
et a découvert que c'était réglé surNULL
. J'ai essayé de le mettre suivantes (par cela DONC, la question ):options ("java.home " = " /Library/Java/JavaVirtualMachines / jdk1.8.0_45.JDK / Contents/Home/ jre")
-
a 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 été en mesure de charger rJava
sans s'écraser R, mais à la place obtenu le message d'erreur affiché ci-dessus. En outre, quand j'ai quitté RStudio, il semblerait que cela se termine normalement, mais alors un message "départ inattendu de RStudio" apparaîtrait, indiquant que le programme s'est écrasé en essayant de fermer.
j'ai finalement décidé d'installer Java pour OS X 2014-001 (Java 6), car je semblais être à court d'options. Maintenant, quand j'ai ouvert R ou RStudio le message pop-up "Ce logiciel a besoin de Java 6" n'est plus apparu. Cependant, je recevais toujours le .onLoad failed in loadNamespace() for 'rJava'
message d'erreur affiché ci-dessus.
en passant en revue certains des messages que j'avais déjà regardé, j'ai remarqué une autre réponse que j'avais manquée avant, qui a recommandé d'ouvrir RStudio avec le code de ligne de commande suivant qui donne RStudio le chemin correct à java:
LD_LIBRARY_PATH=$(/usr / libexec / java_home) / jre/lib / server: open-a RStudio
qui a ouvert une fenêtre RStudio et moi avons aussi pu charger rJava
et les paquets qui en dépendent sans qu'il y ait 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, charger rJava
ou tout paquet qui dépend de rJava
fonctionne et ne jette pas d'erreurs.
donc, je peux maintenant obtenir rJava
de travailler si j'ouvre RStudio de la ligne de commande avec le code que 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, de sorte que RStudio peut être ouvert dans l'habitude Mac, sans avoir besoin d'une ligne de commande bidouille. Je m'inquiète aussi du fait qu'une ancienne version de Java pourrait causer des problèmes plus tard.
quelqu'un aurait-il des idées sur la façon de diagnostiquer et de résoudre ce problème?
15 réponses
j'ai eu le même problème et suis passé par les mêmes étapes que vous. La dernière étape pour permettre de démarrer RStudio à travers Finder / Spotlight était de relier libjvm.dylib dans /usr/local/lib:
sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
-f
indicateur est ajouté à force d'écraser le fichier existant/lien
sur OSX El Capitan 10.11, l'utilisateur n'a pas la permission d'écrire à /usr/lib. Ainsi, à la place, utilisez la commande suivante:
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
vous pouvez charger la libjvm.dylib explicitement, par courir 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 JVM légèrement différent (notez le dossier jre
manquant dans le chemin par rapport aux instructions pour les versions Java précédentes):
sudo ln -f -s $(/usr/libexec/java_home)/lib/server/libjvm.dylib /usr/local/lib
vous devez également notifier R à propos de la JVM:
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 fonctionne par le chargement du paquet" xlsx".
library("xlsx")
P.S. #1 Environment: Mac OS X El Capitan 10.11.3+ with RStudio 0.99.491+ and R 3.2.3+. (Je l'ai testé aussi sur macOS Sierra (10.12) et R. 3.3.1.)
P.S. #2 je trouve que openxlsx
est beaucoup plus rapide et ne dépend pas de Java pour fonctionner, donc j'utilise maintenant ce paquet. L'espoir qui aide les autres.
Voici comment je l'ai configuré pour qu'il fonctionne correctement sur deux Mac fonctionnant sous Mac OS X El Capitan (10.11.6):
-
désinstaller "rJava" en émettant les commandes suivantes dans une fenêtre de terminal:
Rscript -e 'remove.packages("rJava")' sudo Rscript -e 'remove.packages("rJava")'
-
télécharger et installer le logiciel Java à partir D'Oracle: https://www.java.com/en/download/mac_download.jsp
-
ajouter les lignes suivantes à
/Users/<userid>/.bashrc
en utilisant votre éditeur préféré:# Set JAVA_HOME so rJava package can find it export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)/jre
-
fermer et redémarrer n'importe quel terminal, R, et RStudio windows (pour récupérer les changements à
.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 être en mesure d'utiliser le CRAN rJava, sans avoir besoin de recompiler rjava ou de faire toutes les étapes supplémentaires en liant la bibliothèque partagée au répertoire de la 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 lui:
- supprimer le paquet rJava: supprimer.colis (rJava)
- fermer R
- installer la dernière Java sur votre mac
- ouvrir le terminal et taper cette commande: sudo R CMD javareconf
-
ouvrir R et installer rJava avec cette commande:
installer.les packages("rJava", dépendances=TRUE, type="source")
le problème d'image non trouvé existe avec une installation toute neuve sur OSX High Sierra avec la dernière Java SE 10 JDK.
j'ai pu résoudre le problème de chemin avec rJava en utilisant le correctif trouvé sur la page des problèmes rJava Github: https://github.com/s-u/rJava/issues/78
R CMD javareconf JAVA_CPPFLAGS= - I/System/Library/Frameworks / JavaVM.cadres / en-têtes
voici ce qui a fonctionné pour moi sur MAC:
-
dans votre
~/.profile
ou~/.bashrc
ajouter cette ligne:%export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home
1.1
% source .profile
(ou% source .bashrc
) -
% sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
-
remove.packages(rJava)
-
remove.packages(Rweka)
- du terminal Entrez cette commande:
%sudo R CMD javareconf
-
install.packages("rJava", dependencies = TRUE, type = "source")
-
install.packages("rJava", dependencies = TRUE, type = "source")
- Chargez votre
library("rJava", "RWeka")
bonne chance.
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
(remplacer jdk1.8.0_131.jdk
par votre chemin JDK.)
Vérifiez l'emplacement de libjvm.dossier 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)
ici vous pouvez télécharger L'héritage Java version 6 pour El Capitan: https://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US Après cela, le paquet rJava fonctionne pour moi.
Lancez ce qui suit sur la ligne de commande: sudo R CMD javareconf
plusieurs solutions ci-dessus ont mentionné ceci, mais elles suggèrent aussi que l'on enlève et par la suite réinstaller le paquet rJava
. J'ai trouvé ces étapes supplémentaires inutiles.
Cette ligne ci-dessous a résolu le même problème que j'ai avec rJava
paquet comme quelques 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 tous pour leurs contributions parce que parfois une ligne comme celle ci-dessous sauve beaucoup de temps d'aller à la poubelle!
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib