Recentemente ho "aggiornato" da OSX Mountain Lion a Yosemite e da R 3.1.3 a 3.2. Immediatamente dopo l'aggiornamento, quando ho aperto R o RStudio ho ricevuto un messaggio pop-up che diceva che dovevo installare Java 6. Inoltre, il caricamento rJavao qualsiasi pacchetto che dipende da rJava (ad esempio xlsx) ha causato l'arresto anomalo di RStudio (anche R si è bloccato quando l'ho provato aprendo R.appdirettamente).
Dopo aver provato alcune correzioni trovate su Stack Overflow e altrove (maggiori dettagli di seguito), sono a un punto in cui il caricamento rJavao qualsiasi pacchetto che dipende da rJavanon causa più il blocco di R, ma genera il seguente errore:
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’
Tuttavia, se invoco R dalla riga di comando e quindi carico rJavao qualsiasi pacchetto da cui dipende rJava, sembra funzionare (o almeno non ricevo alcun messaggio di errore).
Ho provato una serie di diversi tentativi di soluzioni, alcune alcune volte, e non riesco a ricordare esattamente cosa ho fatto in quale ordine (non mi rendevo conto che sarebbe stato un tale pantano e non stavo davvero tenendo traccia) , ma ecco il succo:
Aggiunto quanto segue al mio
.bash_profile(per questa risposta SO ):export JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
export LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / serverJava riconfigurato dalla riga di comando come segue:
sudo R CMD javareconf -n
Controllato
options("java.home")e scoperto che era impostato suNULL. Ho provato a impostarlo come segue (per questa domanda SO ):opzioni ( "java.home" = "/ Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / JRE")
rJavaHo installato l'ultimo Java Development Kit e reinstallato dalla sorgente (non ricordo dove l'ho trovato).
Ad un certo punto, mentre provavo tutti questi, sono stato in grado di caricare rJavasenza arrestare R, ma invece ho ricevuto il messaggio di errore pubblicato sopra. Inoltre, quando esco da RStudio, sembra che si chiuda normalmente, ma poi viene visualizzato un messaggio "RStudio si è chiuso in modo imprevisto", indicando che il programma si è bloccato durante il tentativo di chiusura.
Alla fine ho deciso di installare Java per OS X 2014-001 (Java 6), poiché mi sembrava di essere a corto di opzioni. Ora, quando ho aperto R o RStudio, il messaggio pop-up "Questo software richiede Java 6" non è più apparso. Tuttavia, stavo ancora ricevendo il .onLoad failed in loadNamespace() for 'rJava'messaggio di errore pubblicato sopra.
Nel rivedere alcuni dei post che avevo già letto, ho notato un'altra risposta SO che mi ero perso prima, che consigliava di aprire RStudio con il seguente codice della riga di comando che fornisce a RStudio il percorso corretto per java:
LD_LIBRARY_PATH = $ (/ usr / libexec / java_home) / jre / lib / server: open -a RStudio
Ciò ha aperto una finestra di RStudio e sono stato anche in grado di caricare rJavae pacchetti che dipendono da esso senza ottenere un errore.
Infine, ho provato a eseguire R dalla riga di comando (cosa che non avevo fatto prima). Si scopre che sulla riga di comando, il caricamento rJavao qualsiasi pacchetto che dipende da rJavafunziona e non genera errori.
Quindi, ora posso mettermi rJavaal lavoro se apro RStudio dalla riga di comando con il codice che fornisce a RStudio il percorso java (come indicato sopra). Tuttavia, mi piacerebbe trovare un modo per risolvere il problema sottostante, qualunque esso sia, in modo che RStudio possa essere aperto nel solito modo Mac, senza bisogno di kludge da riga di comando. Sono anche preoccupato che avere una vecchia versione di Java installata possa causare problemi lungo la strada.
Qualcuno ha qualche idea su come diagnosticare e risolvere questo problema?
Yosemite, quindi non sono sicuro. Vedi sotto per una risposta relativa a El Capitan.
El Capitansoluzione seguente è utile non appena viene RStudiocaricata rJavacome previsto.
otool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so a ottenere un elenco delle librerie condivise e come vengono risolte. Non sono sicuro di come scoprire i contenuti di runtime di @rpath.
LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudiotrucco, ma non funziona più. Ho scritto un post sul blog riguardante questo problema e ho descritto questo problema lì. Chissà se anche altri sperimentano questo problema in questa configurazione o se è colpa mia.