R: falla la instalación del paquete rJava

116

Al instalar rJava usando el install.packages("rJava")comando, obtengo el siguiente error:

checking Java support in R... present:
interpreter : '/usr/bin/java'
archiver    : '/usr/bin/jar'
compiler    : '/usr/bin/javac'
header prep.: '/usr/bin/javah'
cpp flags   : '-I/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../include -I/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../include/linux'
java libs   : '-L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/amd64/server -L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/amd64 -L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../lib/amd64 -L -L/usr/java/packages/lib/amd64 -L/usr/lib64 -L/lib64 -L/lib -L/usr/lib -ljvm'
checking whether JNI programs can be compiled... yes
checking JNI data types... configure: error: One or more JNI types differ from the corresponding native type. You may need to use non-standard compiler flags or a different compiler in order to fix this.
ERROR: configuration failed for package ‘rJava’

Tengo el Java JDK instalado y java -versiondevuelve lo siguiente:

$ java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)

Cuando busco en Google el error, veo que otros están teniendo el mismo problema pero no encuentran una solución que no sea "instalar todo el JDK, no solo el JRE", lo que hice.

La otra cosa que leí fue ejecutar, sudo R CMD javareconfque se ejecuta bastante felizmente sin errores.

¿Alguna idea de cuál es mi problema?

[[EDITAR]] Han pasado unos meses desde que tuve este problema. Inicialmente resolví esto editando mis rutas de Java, como se ilustra en la respuesta que publiqué a continuación. Recientemente me encontré con el mismo problema en una nueva instalación de Ubuntu. Probé la recomendación de Dirk de usar apt-get para instalar el paquete rJava. Funcionó perfectamente. Lo que no pude apreciar inicialmente es que instalar paquetes usando el método apt-get de Ubuntu es fundamentalmente diferente a simplemente cargar el mismo paquete usando install.packages () dentro de R. Los paquetes de Ubuntu resuelven algunos problemas que no me di cuenta ni aprecié .

JD Long
fuente
La respuesta también se puede encontrar aquí - stackoverflow.com/questions/12872699/…
Tejus Prasad
1
Solo estoy haciendo un comentario aquí para mi yo futuro (para cuando indudablemente me encuentre de nuevo en esta pregunta) que necesitaba ejecutar sudo R CMD javareconf para que apt-get install fuera reconocido en mi rstudio-server.
Jim Crozier
2
Nueve años después y este es un problema sin fin. Me encuentro con esto cada vez que hago una nueva instalación de R. Algo cambia ... SO, versión Rstudio, versión R, versión java, jdk, jre, jvm ... Y siempre es una nueva solución para resolverlo. Es ridículo que no pueda leer un archivo de Excel sin toda esta mierda.
rmf
@rmf ahora hay varios paquetes de lectura de Excel que no requieren Java. Para lecturas simples, me gusta, readxlpero prefiero escribir en Excel openxlsx. Ninguno requiere rJava.
JD Long

Respuestas:

114

No quisiera

apt-get install r-cran-rjava

ha sido más fácil? ¡Podrías haberme preguntado en useR! :)

Dirk Eddelbuettel
fuente
3
El punto de Ubuntu y Debian es que no debería tener que buscar en Google en primer lugar, debería "simplemente funcionar" usando los paquetes adecuados. Haz tu vida más fácil y usa paquetes donde puedas. Supongo que también usaste paquetes Java de Ubuntu.
Dirk Eddelbuettel
16
Dirk, haz estas preguntas como si tuviera idea de qué diablos hice. Si mal no recuerdo, tuve problemas para instalar Java usando apt-get, así que construí desde la fuente y esa es probablemente la fuente (todos los juegos de palabras previstos) de mis problemas. Por supuesto que podría ser un mal karma.
JD Long
2
Estoy en R 2.15.3 ubuntu 12.04.2 64bit. cuando llego update.packages(), me doy cuenta de que hay un rJava update. La instalación desde dentro de R falla. Cuando no apt-get install r-cran-rjavahay ninguna actualización disponible. ¿Por qué está pasando esto?
ECII
1
@DirkEddelbuettel, En mi Red Hat, 'sudo yum install r-cran-rjava' no funciona. Dice Complementos cargados: rhnplugin Este sistema está recibiendo actualizaciones de RHN Classic o RHN Satellite. Configuración del proceso de instalación No hay ningún paquete r-cran-rjava disponible.
BigDataScientist
1
@DirkEddelbuettel, aunque el enfoque de 'debería funcionar' me suena genial, el hecho de que solo se enumeren tantos paquetes en r-cran-x es la razón por la que la gente usa la forma R 'normal' (install.packages). Además, acabo de seguir su consejo para hacerlo a través de cran, lo que realmente no ayuda ya que R 3.x es la corriente principal ahora, mientras que los paquetes en r-cran- aparentemente son anteriores a R 3.x
Richard
77

Resulta que mi problema fue un problema con mi JAVA_HOMEvariable de entorno. Sí, impactante, lo sé. Mi configuración inicial para PATHy se JAVA_HOMEveía así:

export JAVA_HOME=/usr/lib/jvm/java-6-sun
export PATH=$PATH:$JAVA_HOME/bin

Y agregué /jrepara que ahora se vea así:

export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre
export PATH=$PATH:$JAVA_HOME/bin

Todo en Java parecía funcionar bien sin el /jrepero rJava no lo haría. Impar.

JD Long
fuente
5
Manteniendo el verdadero significado de "desbordamiento de pila" creando una pregunta -> respuesta bucle infinito --- me gusta.
DrewConway
10
Gracias. ¡Poniendo mi granito de arena para asegurarme de que los futuros usuarios de Google puedan encontrar respuestas a sus preguntas R!
JD Long
11
Después de modificar JAVA_HOME y la ruta al ejecutable de Java, descubrí que necesito ejecutar R CMD javareconf. De lo contrario, el proceso de instalación de rJava aún ve las ubicaciones antiguas de encabezados y bibliotecas, etc.
Carlos Macasaet
1
Nada funcionó para mí. Estoy tratando de instalar "rJava" en el servidor Red Hat Linux donde estoy sirviendo algunas aplicaciones R Shiny. Recibo el siguiente ERROR: la configuración falló para el paquete 'rJava' * eliminando '/ usr / lib64 / R / library / rJava'. He realizado los siguientes pasos en el proceso de eliminación del error. 1. Java actualizado en Linux sudo yum install java-1.7.0-openjdk 2. Configure el INICIO y la RUTA de exportación JAVA_HOME = / usr / lib / jvm / java-1.7.0-ibm-1.7.0.6.1.x86_64 / jre export PATH = $ PATH: $ JAVA_HOME / bin 3. Java reconfigurado sudo / usr / bin / R CMD javareconf
BigDataScientist
Sí, funciona, usé la 8-oracleversión en su lugar.
gunzapper
21

Gracias, su sugerencia acerca de $JAVA_HOMEllevarme a una solución similar:

prompt$ unset JAVA_HOME

antes de invocar R.

Chris Pudney
fuente
1
unset JAVA_HOME (sin signo de dólar)
Vladtn
1
Sí, esto solucionó mi problema. ¿Puede explicar por qué? Gracias
MichaelZ
anule JAVA_HOME y establezca CLASSPATH = $ CLASSPATH: / usr / lib64 / R / share / java
42n4
14

Así es como lo hago funcionar:

En Linux (Ubuntu 16.04)

sudo apt-get install default-jre
sudo apt-get install default-jdk
sudo R CMD javareconf

en R:

install.packages("rJava")
Jim Chen
fuente
1
gracias ... necesitaba instalar algo llamado rcdk en R que se cayó 'porque java no funcionaba. Su trabajo resolvió el problema (Ubuntu 18.04)
user1945827
¡Realmente encantado de ayudar!
Jim Chen
11

Esto funcionó para mí en Ubuntu 12.04 y R versión 3.0

cd /usr/lib/jvm/java-6-sun-1.6.0.26/include

este es el directorio que tiene jni.h

A continuación, cree un enlace suave a otro archivo de encabezado requerido (soy demasiado vago para averiguar cómo incluir más de un directorio en la opción JAVA_CPPFLAGS a continuación):

sudo ln -s linux/jni_md.h .

Finalmente

sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/include
KevinH
fuente
1
sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/includeresolvió el problema por mí.
Moustafa Alzantot
… Y agregaría echo $JAVA_HOMEen caso de java-6-sunque no sea su directorio exacto.
isomorfismos
7

A continuación se muestra una de mis respuestas en otra publicación: error: no se pueden cargar los paquetes instalados en
este momento (esto también es relevante para esta pregunta)

Para usuarios de Linux (Ubuntu): si tiene instalado oracle-java (7/8) . Estará en esta ubicación /usr/lib/jvmy sudose requiere acceso.

Cree el archivo /etc/ld.so.conf.d/java.confcon las siguientes entradas:

/usr/lib/jvm/java-8-oracle/jre/lib/amd64
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server

(Reemplace java-8-oracle con java-7-oracle dependiendo de su versión de java)

Luego:

sudo ldconfig

Reinicie RStudio y luego instale el paquete rJava.

Tejus Prasad
fuente
1
Probé varias soluciones con diversos grados de éxito, pero esta es la primera solución con la que me he encontrado que parece ser resistente (es decir, no requiere que se repitan los mismos 5 pasos cada vez que ejecuto R).
SamWN
4

Ejecutando R bajo Gentoo en un AMD64. Actualicé a R 2.12.0

R versión 2.12.0 (2010-10-15) Copyright (C) 2010 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Plataforma: x86_64-pc-linux-gnu (64 bits) y esos molestos mensajes fueron lejos.

Jan Vandermeer

Jan Vandermeer
fuente
2

Intenté instalar openjdk-7- * pero todavía tenía problemas para instalar rJava. Resulta que después de reiniciar mi computadora, no hubo ningún problema.

entonces

sudo apt-get install openjdk-7-*


RESTART after installing java, then try to install package "rJava" in R
Vahid Mirjalili
fuente
2

El paquete rJava busca la /usr/lib/jvm/default-java/carpeta. Pero no está disponible de forma predeterminada. Esta carpeta tiene un enlace simbólico para el java predeterminado configurado para el sistema.

Para activar el java predeterminado, instale los siguientes paquetes:

sudo apt-get install default-jre default-jre-headless

Probado en ubuntu 17.04 con CRAN R 3.4.1

Gustavo garcia
fuente
2

Lo que funcionó para mí fue cambiar JAVA_HOME del archivo /usr/lib/R/etc/javaconf

Registramos por primera vez lo que era mi versión de Java habilitado: sudo update-alternatives --config java. En mi caso fuejava-8-oracle

Abrí el archivo /usr/lib/R/etc/javaconfy lo reemplacé default-javapor java-8-oracle:

${JAVA_HOME=/usr/lib/jvm/default-java}

reemplazado por :

${JAVA_HOME=/usr/lib/jvm/java-8-oracle}

Y entonces sudo R CMD javareconf

Reinicié RStudio y luego pude instalar rJava.

Kevin Zarca
fuente
1

lo que hago es aqui:

  1. en /etc/apt/sources.list, agregue:

    deb http://ftp.de.debian.org/debian sid main

Nota: rjava debe ser la última versión

2 ejecutar: sudo apt-get update sudo apt-get install r-cran-rjava

Una vez que actualice la versión anterior de rjava, puede instalar rhdfs_1.0.8.

usuario3119404
fuente
1

Estaba enfrentando el mismo problema mientras usaba Windows 10. He resuelto el problema usando el siguiente procedimiento

  1. Descargue Java desde https://java.com/en/download/windows-64bit.jsp para Windows de 64 bits \ Instálelo
  2. Descargue el kit de desarrollo de Java desde https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html para Windows de 64 bits \ Instálelo
  3. Luego haga clic con el botón derecho en el icono "Esta PC" en el escritorio \ Propiedades \ Configuración avanzada del sistema \ Avanzado \ Variables de entorno \ En Variables del sistema seleccione Ruta \ Haga clic en Editar \ Haga clic en Nuevo \ Copiar y pegar rutas "C: \ Archivos de programa \ Java \ jdk1 .8.0_201 \ bin ”y“ C: \ Archivos de programa \ Java \ jre1.8.0_201 \ bin ”(sin comillas) \ OK \ OK \ OK

Nota : jdk1.8.0_201 y jre1.8.0_201 se cambiarán según la versión del kit de desarrollo de Java y Java

  1. En la ventana Variables de entorno, vaya a Variables de usuario para Usuario \ Haga clic en Nuevo \ Ponga el nombre de la variable como "JAVA_HOME" y el valor de la variable como "C: \ Archivos de programa \ Java \ jdk1.8.0_201 \ bin" \ Presione Aceptar

Para verificar la instalación, abra CMD \ Escriba javac \ Presione Enter y escriba java \ presione enter Se mostrará ingrese la descripción de la imagen aquí

En RStudio ejecutar

Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jdk1.8.0_201")

Nota : jdk1.8.0_201 cambiará según la versión del kit de desarrollo de Java

Ahora puede instalar y cargar el paquete rJava sin ningún problema.

Bappa Das
fuente
0

El problema era que rJava no se instalaba en RStudio( Version 1.0.136). Lo siguiente funcionó para mí ( macOS Sierra version 10.12.6) (encontrado aquí ):

Paso 1: descargue e instale javaforosx.dmgdesde aquí

Paso 2: A continuación, ejecute el comando desde dentro de RStudio:

install.packages("rJava", type = 'source')
Nilesh Ingle
fuente
-2

Encontré un problema similar en Ubuntu 16.04 y pude resolverlo creando una carpeta llamada "default-java" /usr/lib/jvmy copiando en ella todo el contenido del archivo /usr/lib/jvm/java-8-oracle. Opté por esta solución ya que corregir la variable de entorno JAVA_HOME resultó ser inútil.

ilya_kuzminov
fuente
1
Esto romperá la default-jreinstalación del paquete.
Gustavo García