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 rJava
o 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.app
direttamente).
Dopo aver provato alcune correzioni trovate su Stack Overflow e altrove (maggiori dettagli di seguito), sono a un punto in cui il caricamento rJava
o qualsiasi pacchetto che dipende da rJava
non 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 rJava
o 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")
rJava
Ho 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 rJava
senza 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 rJava
e 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 rJava
o qualsiasi pacchetto che dipende da rJava
funziona e non genera errori.
Quindi, ora posso mettermi rJava
al 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 Capitan
soluzione seguente è utile non appena viene RStudio
caricata rJava
come 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 RStudio
trucco, 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.