Recientemente "actualicé" de OSX Mountain Lion a Yosemite y de R 3.1.3 a 3.2. Inmediatamente después de la actualización, cuando abrí R o RStudio, recibí un mensaje emergente que decía que necesitaba instalar Java 6. Además, la carga rJava
o cualquier paquete que dependa de rJava (por ejemplo, xlsx
) causó que RStudio se bloqueara (R también se bloqueó cuando probé esto abriendo R.app
directamente).
Después de probar algunas correcciones encontradas en Stack Overflow y en otros lugares (más detalles a continuación), estoy en un punto en el que cargar rJava
o cualquier paquete que depende rJava
ya no hace que R se bloquee, pero da como resultado el siguiente error:
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’
Sin embargo, si invoco R desde la línea de comando y luego cargo rJava
o cualquier paquete que depende rJava
, parece funcionar (o al menos no recibo ningún mensaje de error).
He intentado varios intentos diferentes de solución, algunos de ellos varias veces, y no puedo recordar exactamente lo que hice en qué orden (no me di cuenta de que esto sería un pantano y realmente no estaba siguiendo la pista) , pero aquí está la esencia de esto:
Agregué lo siguiente a mi
.bash_profile
(según esta respuesta SO ):export JAVA_HOME = "/ usr / libexec / java_home -v 1.8"
export LD_LIBRARY_PATH = $ JAVA_HOME / jre / lib / serverJava reconfigurado desde la línea de comando de la siguiente manera:
sudo R CMD javareconf -n
Comprobado
options("java.home")
y descubierto que esto se configuró enNULL
. Intenté configurarlo de la siguiente manera (según esta pregunta SO ):opciones ("java.home" = "/ Library / Java / JavaVirtualMachines / jdk1.8.0_45.jdk / Contents / Home / jre")
Instalé el último Kit de desarrollo de Java y lo reinstalé
rJava
desde el origen (no recuerdo dónde encontré ese).
En algún momento al intentar todo esto, pude cargar rJava
sin bloquear R, pero en su lugar recibí el mensaje de error publicado anteriormente. Además, cuando salgo de RStudio, parece que se cierra normalmente, pero luego aparece el mensaje "RStudio se cerró inesperadamente", indicando que el programa se ha bloqueado al intentar cerrar.
Finalmente decidí instalar Java para OS X 2014-001 (Java 6), ya que parecía estar quedando sin opciones. Ahora, cuando abrí R o RStudio, ya no aparecía el mensaje emergente "Este software necesita Java 6". Sin embargo, todavía recibía el .onLoad failed in loadNamespace() for 'rJava'
mensaje de error publicado anteriormente.
Al revisar algunas de las publicaciones que ya había visto, noté otra respuesta SO que me había perdido antes, que recomendó abrir RStudio con el siguiente código de línea de comando que le da a RStudio la ruta correcta a Java:
LD_LIBRARY_PATH = $ (/ usr / libexec / java_home) / jre / lib / server: open -a RStudio
Eso abrió una ventana de RStudio y también pude cargar rJava
y paquetes que dependen de él sin obtener un error.
Por último, intenté ejecutar R desde la línea de comandos (que no había hecho antes). Resulta que en la línea de comandos, la carga rJava
o cualquier paquete que dependa de las rJava
obras y no arroje ningún error.
Entonces, ahora puedo rJava
trabajar si abro RStudio desde la línea de comandos con el código que le da a RStudio la ruta de Java (como se indicó anteriormente). Sin embargo, me gustaría encontrar una manera de solucionar el problema subyacente, sea cual sea, para que RStudio se pueda abrir de la manera habitual en Mac, sin necesidad de una línea de comando kludge. También me preocupa que tener instalada una versión anterior de Java pueda causar problemas en el futuro.
¿Alguien tiene alguna idea sobre cómo diagnosticar y resolver este problema?
Yosemite
, así que no estoy seguro. Vea a continuación una respuesta relacionada con El Capitan
.
El Capitan
solución a continuación es útil tan pronto como se RStudio
carga rJava
como se esperaba.
otool -L /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
obtener una lista de las bibliotecas compartidas y cómo se resuelven. No estoy seguro de cómo descubrir el contenido de tiempo de ejecución de @rpath
.
LD_LIBRARY_PATH=$(/usr/libexec/java_home)/jre/lib/server: open -a RStudio
truco, pero ya no funciona. He escrito una entrada de blog sobre este tema y describió este problema existe. Me pregunto si otros también experimentan este problema en esta configuración o si es mi culpa.