Solución:
Parece que no tienes JDK instalado. Necesitarás al menos
sudo apt-get install openjdk-7-jdk
luego vuelve a ejecutar
sudo R CMD javareconf
Asegúrese de NO configurar JAVA_HOME
a mano: se detectará automáticamente. Entonces debería ver algo como esto:
$ sudo R CMD javareconf
Java interpreter : /usr/bin/java
Java version : 1.7.0_91
Java home path : /usr/lib/jvm/java-7-openjdk-amd64/jre
Java compiler : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
trying to compile and link a JNI program
detected JNI cpp flags : -I$(JAVA_HOME)/../include
detected JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -I/usr/lib/jvm/java-7-openjdk-amd64/jre/../include -fpic -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c conftest.c -o conftest.o
gcc -std=gnu99 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o conftest.so conftest.o -L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server -ljvm -L/usr/lib/R/lib -lR
JAVA_HOME : /usr/lib/jvm/java-7-openjdk-amd64/jre
Java library path: $(JAVA_HOME)/lib/amd64/server
JNI cpp flags : -I$(JAVA_HOME)/../include
JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -ljvm
Lo que está mal con sudo apt-get install r-cran-rjava
?
Vea, por ejemplo, esta respuesta anterior y la pregunta / hilo que la rodea.
Para una instalación desde cero, aún podría ser mucho peor que comenzar desde sudo apt-get build-dep r-cran-rjava
. Obtendrá el JDK correspondiente a su versión de Ubuntu.
Primero, recomendaría instalar Rstudio desde su sitio web: https://www.rstudio.com/products/rstudio/download/ (es decir, Rstudio 64bit: https://download1.rstudio.org/rstudio-0.99.489-amd64.deb ). Esto no resuelve el problema directamente, pero ayuda a evitar otros errores con Rstudio.
Con respecto al error, intente asegurarse de tener instalado JDK. No creo que el comando java -version
puede saber si JDK está instalado. Debe verificar el paquete de JDK en sí, o según el mensaje de error, haga esto:
locate jni.h
La salida debe coincidir o ser compatible con su JAVAHOME, por ejemplo:
/usr/lib/jvm/java-7-openjdk-amd64/include/jni.h
/usr/lib/jvm/java-7-oracle/include/jni.h
Actualización 1:
R CMD javareconf
está buscando el jni.h
archivar bajo $(JAVA_HOME)/include
Tiene JDK instalado, pero es muy probable que tenga java predeterminado en un directorio JRE, por eso ocurrió el error.
Puedes ver donde default-java
realmente apunta al hacer este comando:
jRealDir=$(readlink -f /usr/lib/jvm/default-java)
echo $jRealDir
# sample correct output: /usr/lib/jvm/jdk1.8.0_65
# or /usr/lib/jvm/java-8-oracle if you default to Oracle's
# now check jni.h
ls -l $jRealDir/include/jni.h
# sample expected output:
# /usr/lib/jvm/jdk1.8.0_65/include/jni.h
Si el ls
el comando falló, tienes que configurarlo para que javareconf
( y después rJava
) puede usar java desde JDK, no desde JRE. Tienes dos opciones:
Método 1: hágalo en todo el sistema
Esto es conveniente, pero puede afectar a otros programas como el que mencionaste jmol
. Pero no se preocupe, esto es reversible, simplemente vuelva a ejecutar el comando y elija el anterior. Haga el siguiente comando y elija el directorio que tiene JDK:
sudo update-alternatives --config java
Después de esa prueba, ¿cómo jmol
funciona, si funciona bien, enhorabuena. Ahora está listo para probar rJava. Si no es así, pruebe el segundo método a continuación
Método 2: hazlo solo para R
poner esto en el .Rprofile
bajo su directorio personal
Sys.setenv(JAVA_HOME = '/usr/lib/jvm/jdk1.8.0_65')
# this set JAVA_HOME for R to correct java home dir.
Después de actualizar o crear el .Rprofile
Reinicie R en Rstudio. los R CMD javareconf
aún puede fallar en este caso, pero debería estar bien si lo ejecuta desde Shell
debajo Tools
menú de Rstudio.
Con respecto a la instalación de Rstudio desde el repositorio de acciones de Ubuntu. No haría ninguna diferencia para conseguir rJava
corriendo. Por otra parte, recomiendo instalar Rstudio para su página de inicio porque la nueva versión también tiene algunas características interesantes (es decir, mejor autocompletado, que es lo que más me gusta).