Usando el paquete rJava en Win7 de 64 bits con R
Estoy intentando instalarlo rJava
en 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 rJava
bien. ¿El problema es simplemente que rJava
no 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)"
Actualización (julio de 2018):
La última versión de CRAN de rJava encontrará jvm.dll
automáticamente, sin configurar manualmente PATH
o 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 segundoC:\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-multiarch
bandera:
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.
Hacer que rJava funcione depende en gran medida de la configuración de su computadora:
- 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í).
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 .
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)