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?
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.Yosemite
, así que no estoy seguro. Vea a continuación una respuesta relacionada conEl Capitan
.El Capitan
solución a continuación es útil tan pronto como seRStudio
cargarJava
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
.Respuestas:
Tuve el mismo problema y seguí los mismos pasos que tú. El último paso para permitir iniciar RStudio a través de Finder / Spotlight fue vincular libjvm.dylib a / usr / local / lib:
-f
se agrega un indicador para forzar la sobrescritura de un archivo / enlace existentefuente
cannot jfindclass[[1]]
rJava y un controlador JDBC/usr/local/lib/libjvm.dylib
archivo, ya que / usr / local / lib / no parece estar en @rpath. Por ejemplo:ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/
En OSX El Capitan 10.11, el usuario no tiene permiso para escribir en / usr / lib. Entonces, en su lugar, use el siguiente comando:
fuente
Puede cargar el libjvm.dylib explícitamente, ejecutando como
fuente
+1
aunque por ofrecer una alternativa.En macOS High Sierra (10.13.1) y Java Versión 9, debe usar una ruta JVM ligeramente diferente (observe la
jre
carpeta que falta en la ruta en comparación con las instrucciones para versiones anteriores de Java):También debe notificar a R sobre la JVM:
fuente
El siguiente comando funciona:
Después de eso, en RStudio, cargar rJava funciona mediante la carga del paquete "xlsx".
Entorno PS # 1: Mac OS X El Capitan 10.11.3+ con RStudio 0.99.491+ y R 3.2.3+. (Ahora he probado esto también en macOS Sierra (10.12) y R.3.3.1.)
PS # 2 Me parece que
openxlsx
es mucho más rápido y no depende de Java para funcionar, así que ahora estoy usando ese paquete. Espero que ayude a los demás.fuente
openxlsx
FTW!openxlsx
todos modos.Debería poder utilizar CRAN rJava, sin necesidad de volver a compilar rJava o realizar ningún paso adicional vinculando la biblioteca compartida al directorio de la biblioteca de frameworks R.
fuente
Así es como lo configuré funcionando correctamente en dos Mac con Mac OS X El Capitan (10.11.6):
Desinstale 'rJava' emitiendo los siguientes comandos en una ventana de terminal:
Descargue e instale el software Java de Oracle: https://www.java.com/en/download/mac_download.jsp
Agregue las siguientes líneas para
/Users/<userid>/.bashrc
usar su editor favorito:Cierre y reinicie las ventanas de terminal, R y RStudio (para recoger los cambios
.bashrc
).Ejecute el siguiente comando en una ventana de Terminal:
Ejecute el siguiente comando en una ventana de Terminal:
fuente
Aquí están los pasos fáciles para ello:
Abra R e instale rJava con este comando:
install.packages ("rJava", dependencias = VERDADERO, tipo = "fuente")
fuente
libjvm.dylib
into/usr/local/lib
también lo hizo :)El problema de la imagen no encontrada existe con una instalación completamente nueva en OSX High Sierra con el último Java SE 10 JDK.
Pude resolver el problema de ruta con rJava usando la solución que se encuentra en la página de problemas de rJava Github: https://github.com/su/rJava/issues/78
R CMD javareconf JAVA_CPPFLAGS = -I / System / Library / Frameworks / JavaVM.framework / Headers
fuente
Aquí lo que funcionó para mí en MAC:
en su
~/.profile
o~/.bashrc
agregue esta línea:%export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home
1.1
% source .profile
(o% source .bashrc
)% sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
remove.packages(rJava)
remove.packages(Rweka)
%sudo R CMD javareconf
install.packages("rJava", dependencies = TRUE, type = "source")
install.packages("rJava", dependencies = TRUE, type = "source")
library("rJava", "RWeka")
La mejor de las suertes.
fuente
Quizás otra respuesta simple que no toque su sistema de archivos:
$ 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
(Sustituya
jdk1.8.0_131.jdk
con su ruta JDK).fuente
install_name_tool -add_rpath /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre/lib/server /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.so
. Pude ver que faltaba el camino conotool -l /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.so | grep LC_RPATH
Verifique la ubicación del archivo libjvm.dylib.
Prueba esto, en mi caso esto funcionó:
fuente
Revisé toda la solución de problemas que pude encontrar, luego instalé jdk-11.0.1_osx-x64_bin.dmg de: Descargas de Oracle
Todo funcionó perfectamente después de eso.
Verifique la versión de la biblioteca que no se cargó cuando ejecuta la biblioteca ('rJava') y compárela con la versión de Java que necesita instalar.
fuente
Noté que 'rJava' es bastante estricto sobre la versión JDK mientras se carga en Rstudio.
En mi caso (Mac OS. 10.14.6 - Mojave) instalé jdk-13 que fue probado contra jdk-11.
He vinculado mi versión JDK a un directorio inexistente que Rstudio asumió como válido (JDK 11):
y sorprendentemente funciona como un encanto ...
Por cierto, no hubo ningún problema para ejecutar 'rJava' siguiendo las instrucciones anteriores en R. nativa.
fuente
Aquí puede descargar la versión 6 de Java heredada para El Capitan: https://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US Después de hacerlo, el paquete rJava funciona para mí.
fuente
Esta línea a continuación ha resuelto el mismo problema que tenía con el
rJava
paquete como lo hicieron otros en esta discusión. Estoy seguro de que hay más de una solución a este problema y les agradezco sinceramente a todos por sus contribuciones porque a veces una línea como la siguiente ahorra mucho tiempo de ir a la basura.fuente
Ejecute lo siguiente en la línea de comando:
sudo R CMD javareconf
Varias soluciones anteriores han mencionado esto, pero también sugieren que uno elimine y luego reinstale el
rJava
paquete. Encontré que esos pasos adicionales son innecesarios.fuente
sudo R CMD javareconf
perolibrary(rJava)
todavía da los mismos errores:Error: package or namespace load failed for ‘rJava’: .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.5/Resources/library/rJava/libs/rJava.so': ... Reason: image not found
Puede cambiar la referencia en R utilizando el siguiente comando:
fuente