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é sur NULL . 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?

104
demandé sur aseidlitz 2015-06-09 20:33:28

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

260
répondu aseidlitz 2016-05-13 09:04:08

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
48
répondu lalas 2015-10-20 17:43:35

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)
27
répondu yuan 2015-12-28 06:55:53

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/
19
répondu Endre 2018-09-29 10:30:09

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.

16
répondu Sander W. van der Laan 2016-10-31 10:40:01

Voici comment je l'ai configuré pour qu'il fonctionne correctement sur deux Mac fonctionnant sous Mac OS X El Capitan (10.11.6):

  1. 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")'
    
  2. télécharger et installer le logiciel Java à partir D'Oracle: https://www.java.com/en/download/mac_download.jsp

  3. 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
    
  4. fermer et redémarrer n'importe quel terminal, R, et RStudio windows (pour récupérer les changements à .bashrc ).

  5. 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
    
  6. exécutez la commande suivante dans une fenêtre de Terminal:

    sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'
    
5
répondu Gregory R. Warnes 2016-11-16 19:13:12

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
5
répondu Jim 2017-06-21 21:08:19

Voici les étapes faciles pour lui:

  1. supprimer le paquet rJava: supprimer.colis (rJava)
  2. fermer R
  3. installer la dernière Java sur votre mac
  4. ouvrir le terminal et taper cette commande: sudo R CMD javareconf
  5. ouvrir R et installer rJava avec cette commande:

    installer.les packages("rJava", dépendances=TRUE, type="source")

4
répondu Hamidreza Ahady Dolatsara 2016-07-05 17:08:29

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

2
répondu Galen 2018-06-03 16:38:18

voici ce qui a fonctionné pour moi sur MAC:

  1. 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 )

  2. % sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
  3. remove.packages(rJava)
  4. remove.packages(Rweka)
  5. du terminal Entrez cette commande: %sudo R CMD javareconf
  6. install.packages("rJava", dependencies = TRUE, type = "source")
  7. install.packages("rJava", dependencies = TRUE, type = "source")
  8. Chargez votre library("rJava", "RWeka")

bonne chance.

1
répondu Nasser 2016-09-05 09:30:17

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.)

1
répondu mokjpn 2017-05-09 04:47:37

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)
1
répondu Sagar Neel De 2018-04-04 11:09:32

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.

0
répondu ignazw 2015-11-03 21:19:01

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.

0
répondu Megatron 2018-06-01 19:37:38

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
-1
répondu Süleyman 2017-08-29 08:57:18