the java_home from error determined cannot r rjava

r - java_home - java 64 bits



Usando el paquete rJava en Win7 64 bit con R (10)

Estoy tratando de instalar rJava en una computadora con Win 7 64 bit. Cuando corro

install.packages("rJava")

Todo parece estar bien:

Installing package(s) into ‘C:/Users/djq/Documents/R/win-library/2.13’ (as ‘lib’ is unspecified) trying URL ''http://software.rc.fas.harvard.edu/mirrors/R/bin/windows/contrib/2.13/rJava_0.9-1.zip'' Content type ''application/zip'' length 654936 bytes (639 Kb) opened URL downloaded 639 Kb package ''rJava'' successfully unpacked and MD5 sums checked The downloaded packages are in C:/TEMP/RtmpW2eAUw/downloaded_packages

pero cuando traté de cargar la biblioteca de la library(rJava) me library(rJava) el siguiente error:

Error : .onLoad failed in loadNamespace() for ''rJava'', details: call: inDL(x, as.logical(local), as.logical(now), ...) error: unable to load shared object ''C:/Users/me/Documents/R/win-library/2.13/rJava/libs/x64/rJava.dll'': LoadLibrary failure: %1 is not a valid Win32 application. Error: package/namespace load failed for ''rJava''

He instalado Java JRE (probando versiones de 32 y 64 bits) y JDK (usando tanto 32 como 64 bit). Mi versión R es R version 2.13.1 (2011-07-08) y estoy usando RStudio.

Si intento usar 32 bit R, puedo cargar rJava fino. ¿El problema es solo que rJava no se ejecuta en R 64 bit? ¿Cómo puedo saber si un paquete es solo para 32 en lugar de 64?

editar: acaba de publicar R.version() :

> R.Version() $platform [1] "x86_64-pc-mingw32" $arch [1] "x86_64" $os [1] "mingw32" $system [1] "x86_64, mingw32" $status [1] "" $major [1] "2" $minor [1] "13.1" $year [1] "2011" $month [1] "07" $day [1] "08" $`svn rev` [1] "56322" $language [1] "R" $version.string [1] "R version 2.13.1 (2011-07-08)"


(Nota: muchas personas en otras respuestas / comentarios han dicho que deben eliminar JAVA_HOME, así que considere eso. No he vuelto a consultar este tema recientemente para saber si todos los pasos a continuación aún son necesarios).

Aquí hay algunos consejos rápidos sobre cómo comenzar a usar R + rJava en Windows 7 64 bit. Hay varias posibilidades, pero la mayoría tienen defectos fatales. Esto es lo que funcionó para mí:

Agregue jvm.dll a su RUTA

rJava, el puente R <-> Java, necesitará jvm.dll, pero R tendrá problemas para encontrar esa DLL. Reside en una carpeta como

C:/Program Files/Java/jdk1.6.0_25/jre/bin/server

o

C:/Program Files/Java/jre6/jre/bin/client

Donde sea que esté el tuyo, agrega ese directorio a tu variable PATH de Windows. (Windows -> "Ruta" -> "Editar variables de entorno para su cuenta" -> RUTA -> editar el valor).

Es posible que ya tenga Java en su RUTA. Si es así, debería encontrar el directorio cliente / servidor en el mismo directorio "inicio" de Java que el que ya está en su RUTA.

Para estar seguro, asegúrese de que sus arquitecturas coincidan. Si tiene Java en Program Files , es de 64 bits, por lo que debe ejecutar R64. Si tiene Java en Program Files (x86) , eso es de 32 bits, por lo que utiliza R. simple de 32 bits

Relanzar R desde el menú de Windows

Si R se está ejecutando, salga.

Desde el menú Inicio, inicie R / RGUI, RStudio. Esto es muy importante, para que R recoja sus cambios de RUTA.

Instala rJava 0.9.2.

¡Las versiones anteriores no funcionan! Los espejos no están actualizados, por lo tanto, vaya a la fuente en www.rforge.net: http://www.rforge.net/rJava/files/ . Tenga en cuenta el consejo que hay

“Please use `install.packages(''rJava'',,''http://www.rforge.net/'')` to install.”

Eso es casi correcto. Esto realmente funciona:

install.packages(''rJava'', .libPaths()[1], ''http://www.rforge.net/'')

Mira la puntuación! El misterioso ".libPaths () [1]" simplemente le dice a R que instale el paquete en el directorio principal de la biblioteca. Por alguna razón, dejar el valor en blanco no funciona, aunque debería ser el predeterminado.


Creo que esta es una actualización. No pude instalar rJava (en Windows) hasta que instalé el JDK, ya que Javac no se encuentra y javac no funciona en el símbolo del sistema de Windows . El mensaje que estaba recibiendo era

''javac'' is not recognized as an internal or external command, operable program or batch file.

El JDK incluye el JRE, y de acuerdo con https://cran.r-project.org/web/packages/rJava/index.html la versión actual (0.9-7 publicada en 2015-Jul-29) de rJava

SystemRequirements: Java JDK 1.2 or higher (for JRI/REngine JDK 1.4 or higher), GNU make

Así que ahí está: si rJava no se instalará porque no puede encontrar javac, y tiene JRE instalado, entonces pruebe el JDK. Además, asegúrese de que JAVA_HOME apunta al JDK y no al JRE.


Hacer que rJava funcione depende en gran medida de la configuración de tu computadora:

  1. Debe usar la misma versión de 32 bits o de 64 bits para ambos: R y JDK / JRE. Una mezcla de esto nunca funcionará (al menos para mí).
  2. Si usa la versión de 64 bits , asegúrese de no configurar JAVA_HOME como una variable de entorno. Si se establece esta variable, rJava no funcionará por la razón que sea (al menos para mí). Puede verificar fácilmente dentro de R es JAVA_HOME se establece con

    Sys.getenv("JAVA_HOME")

Si necesita tener JAVA_HOME configurado (por ejemplo, lo necesita para maven u otra cosa), puede desactivarlo dentro de su R-session con el siguiente código antes de cargar rJava:

if (Sys.getenv("JAVA_HOME")!="") Sys.setenv(JAVA_HOME="") library(rJava)

Esto debería ser el truco en la mayoría de los casos. Además, esto solucionará el problema al utilizar el paquete rJava en Win7 de 64 bits con R también. Tomé prestada la idea de desarmar la variable de entorno del fallo de instalación del paquete R: rJava .


La última pregunta tiene una respuesta fácil:

> .Machine$sizeof.pointer [1] 8

Es decir, estoy ejecutando R64. Si ejecutara 32 bit R, devolvería 4. El hecho de que esté ejecutando un sistema operativo de 64 bits no significa que vaya a ejecutar 64 bit R, y del mensaje de error parece que no lo está.

EDITAR: si el paquete tiene binarios, entonces están en directorios separados. Los detalles dependerán del sistema operativo. Observe que su error LoadLibrary ocurrió cuando intentó encontrar el dll en ...rJava/libs/x64/... En mi sistema MacOS, la carpeta ... rJava / libs / ... `tiene 3 subdirectorios: i386, ppc y x86_64. (Los archivos ppc son obviamente equipaje inútil).


Lo siento por Necro. También me he encontrado con el mismo problema y descubrí que rJava espera que JAVA_HOME apunte a JRE. Si tiene JDK instalado, lo más probable es que su JAVA_HOME apunte a JDK. Mi solución rápida:

Sys.setenv(JAVA_HOME=paste(Sys.getenv("JAVA_HOME"), "jre", sep="//"))


Necesito tener un JRE de 32 bits disponible para mi navegador, pero JRE de 64 bits para R y rJava. El JRE de 32 bits está instalado en la ubicación predeterminada. Después de algunos experimentos, descubrí que solo necesitaba una de las sugerencias de misterbee para que rJava (versión 0.9-6 ) funcione para mí. Todo lo que hice fue agregar la ruta a mi instalación java de 64 bits:

C:/apps/Java/jre/bin/server/jvm.dll

a la parte superior de mi variable de entorno de ruta (tu ruta probablemente será diferente) y eliminar mi JAVA_HOME como se sugirió user2161065 . Puse esto justo antes de la entrada

C:/ProgramData/Oracle/Java/javapath

que el instalador de Oracle inserta en la parte superior de la ruta y apunta a algunos enlaces simbólicos al JRE de 32 bits. Al agregar la entrada a 64 bit jvm.dll, parece que rJava podría encontrar lo que necesita.


Para mí, configurar JAVA_HOME hizo el truco (en lugar de desactivar, como en otra respuesta dada aquí). Ya sea en Windows:

set JAVA_HOME="C:/Program Files/Java/jre7/"

O dentro de R:

Sys.setenv(JAVA_HOME="C://Program Files//Java//jre7//")

Pero cuál es probablemente la mejor solución (ya que rJava 0.9-4) está anulando en R la configuración JAVA_HOME de Windows en total:

options(java.home="C://Program Files//Java//jre7//") library(rJava)


Resolví el problema uninstalling software Java aparentemente redundante de mi máquina con Windows 7 x64. Lo logré desinstalando primero todas las aplicaciones Java y luego instalando una nueva versión de Java . (Más tarde apunté R 3.4.3 x86_64-w64-mingw32 a la ruta de Java , solo para mencionar, aunque no creo que este fuera el verdadero problema.) Hoy solo quedó Java 8 Update 161 (64-bit) 8.0.1610.12 entonces. Después de esto, install.packages("rJava"); library(rJava) install.packages("rJava"); library(rJava) funcionó perfectamente.


Tuve algunos problemas para determinar el paquete de Java que se instaló cuando me encontré con este problema, ya que las respuestas anteriores no funcionaron exactamente para mí. Para resolverlo, escribí:

Sys.setenv(JAVA_HOME="C:/Program Files/Java/

y luego presionar tab y los dos directorios sugeridos fueron "jre1.8.0_31 /" y "jre7 /"

Jre7 no resolvió mi problema, pero jre1.8.0_31 / did. La respuesta final se estaba ejecutando (antes de la biblioteca (rJava)):

Sys.setenv(JAVA_HOME="C:/Program Files/Java/jre1.8.0_31/")

Estoy usando Windows 8.1 de 64 bits Espero que esto ayude a alguien más.

Actualizar:

Verifique su versión para determinar qué X debería ser (el mío ha cambiado varias veces desde esta publicación):

Sys.setenv(JAVA_HOME="C:/Program Files/Java/jre1.8.0_x/")


Tuve un problema relacionado con rJava. Se cargaría, pero un paquete que depende de él no se cargaría.

Los usuarios pueden perder mucho tiempo con jvm.dll y PATH y JAVA_HOME cuando la verdadera solución es forzar al instalador a olvidarse de i386. Use la opción para install.packages. (Esto también funciona cuando se usa la biblioteca de drat. (El crédito va a Dason)

install.packages("SqlRender",INSTALL_opts="--no-multiarch")

Además, puede modificar solo su ruta de usuario con un comando de ganar como este:

setx PATH "C:/Program Files/Java/jre1.8.0_102/bin/server;%PATH%"