Usando el paquete rJava en Win7 de 64 bits con R

Resuelto djq asked hace 54 años • 13 respuestas

Estoy intentando instalarlo rJavaen una computadora con Win 7 de 64 bits. 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 intenté cargar la biblioteca library(rJava)me sale 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'

Instalé Java JRE (probando las versiones de 32 y 64 bits) y el JDK (usando 32 y 64 bits). Mi versión R es R version 2.13.1 (2011-07-08)y estoy usando RStudio.

Si intento usar R de 32 bits, puedo cargar rJavabien. ¿El problema es simplemente que rJavano se ejecuta en R de 64 bits? ¿Cómo puedo saber si un paquete es solo para 32 en lugar de 64?


editar: recién publicado 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)"
djq avatar Jan 01 '70 08:01 djq
Aceptado

Actualización (julio de 2018):

La última versión de CRAN de rJava encontrará jvm.dllautomáticamente, sin configurar manualmente PATHo JAVA_HOME. Sin embargo tenga en cuenta que:

  • Para usar rJava en R de 32 bits, necesita Java para Windows x86
  • Para usar rJava en R de 64 bits, necesita Java para Windows x64
  • Para crear o verificar paquetes de R con múltiples arcos (el valor predeterminado), debe instalar Java para Windows x64 y Java para Windows x86 . En Win 64, el primero se instala C:\Program files\Java\y el segundo C:\Program Files (x86)\Java\para que no entren en conflicto.

A partir de la versión 9 de Java, se suspendió la compatibilidad con x86 (win32). Por lo tanto, la última configuración de múltiples arcos que funciona es instalar jdk-8u172-windows-i586.exe y jdk-8u172-windows-x64.exe y luego el paquete binario de CRAN:

install.packages("rJava")

El paquete binario de CRAN debería detectarse en la jvm por sí solo. Sólo expertos : para compilar rJava desde el código fuente, necesita la --merge-multiarchbandera:

install.packages('rJava', type = 'source', INSTALL_opts='--merge-multiarch')

Antigua respuesta:

(Nota: muchas personas en otras respuestas/comentarios han dicho que se elimine JAVA_HOME, así que considérelo. No he vuelto a visitar este problema recientemente para saber si todos los pasos a continuación siguen siendo necesarios).

A continuación se ofrecen algunos consejos rápidos sobre cómo empezar a utilizar R + rJava en Windows 7 de 64 bits. Hay varias posibilidades, pero la mayoría tiene 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

Dondequiera que esté el suyo, agregue ese directorio a la 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), es de 32 bits, por lo que usa R simple de 32 bits.

Reinicie 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 detecte los cambios de RUTA.

Instale rJava 0.9.2.

¡Las versiones anteriores no funcionan! Los mirrors no están actualizados, así que vaya a la fuente en www.rforge.net: http://www.rforge.net/rJava/files/ . Tenga en cuenta el consejo allí

“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/')

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

misterbee avatar Sep 29 '2011 23:09 misterbee

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

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

    Sys.getenv("JAVA_HOME")
    

Si necesita tener configurado JAVA_HOME (por ejemplo, lo necesita para maven o algo más), puede desactivarlo dentro de su sesión R con el siguiente código antes de cargar rJava:

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

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

user2161065 avatar Apr 14 '2013 11:04 user2161065

Para mí, configurar JAVA_HOME funcionó (en lugar de desarmarlo, 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 lo que probablemente sea la mejor solución (desde rJava 0.9-4) es anular por completo dentro de R la configuración JAVA_HOME de Windows:

options(java.home="C:\\Program Files\\Java\\jre7\\")
library(rJava)
ROLO avatar Oct 16 '2013 21:10 ROLO