156 votes

En utilisant le package rJava sur Win7 64 bit avec R

Je suis en train d'installer rJava sur un ordinateur avec windows 7 64 bits. Quand je le lance

install.packages("rJava")

tout semble aller pour le mieux:

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

mais quand j'ai essayé de charger la bibliothèque library(rJava) j'obtiens l'erreur suivante:

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'

J'ai installé le Java JRE (d'essayer les deux versions 32 et 64 bits) et le JDK (en utilisant à la fois 32 bits et 64 bits). Ma version R est - R version 2.13.1 (2011-07-08) et je suis en utilisant RStudio.

Si j'ai essayer d'utiliser 32 bits R, je peux charger rJava fine. Le problème est simplement qu' rJava ne pas exécuter dans la R 64 bits? Comment puis-je savoir si un paquet est juste pour 32 au lieu de 64?


edit: juste posté 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)"

160voto

misterbee Points 2523

(Remarque: la plupart des gens dans d'autres réponses/commentaires l'ont dit d'enlever JAVA_HOME, donc envisager que. Je n'ai pas revisité cette question récemment de savoir si toutes les étapes ci-dessous sont encore nécessaires.)

Voici quelques conseils rapides sur la façon de se lever et courir avec R + rJava sur Windows 7 64 bits. Il y a plusieurs possibilités, mais la plupart ont des failles fatales. Voici ce qui a fonctionné pour moi:

Ajouter jvm.dll votre CHEMIN

rJava, le R<->Java bridge, auront besoin d'jvm.dll mais R aura du mal à trouver cette DLL. Il réside dans un dossier comme

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

ou

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

Où est le vôtre, ajouter ce répertoire à votre variable PATH de windows. (Windows -> "Chemin" -> "Modifier les variables d'environnement de votre compte" -> CHEMIN -> modifier la valeur.)

Vous pouvez déjà avoir Java sur votre CHEMIN. Si oui, vous devriez trouver le client/serveur de répertoire dans le même Java "à la maison" dir que celui qui est déjà sur votre CHEMIN.

Pour être sûr, assurez-vous que votre architectures de match.Si vous avez Java en Program Files, il est en 64 bits, alors vous devez exécuter R64. Si vous avez Java en Program Files (x86), qui est de 32 bits, si vous utilisez la plaine de 32 bits R.

Re-lancement de R à partir du Menu Windows

Si R est en cours d'exécution, quittez.

À partir du Menu Démarrer , Commencez R / RGUI, RStudio. Ceci est très important, de faire de la R ramasser votre CHEMIN de changements.

Installer rJava 0.9.2.

Les versions antérieures ne fonctionnent pas! Les miroirs ne sont pas à jour, donc aller à la source au www.rforge.net: http://www.rforge.net/rJava/files/. Notez les conseils il

"Please use

`install.packages('rJava',,'http://www.rforge.net/')`

to install."

C'est presque correct. Cela fonctionne réellement:

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

Regarder les signes de ponctuation! Le mystérieux ".libPaths()[1]," juste dit R pour installer le package dans le primaire répertoire de la bibliothèque. Pour une raison quelconque, laissant la valeur vide ne fonctionne pas, même si elle devrait par défaut.

116voto

user2161065 Points 546

Obtenir rJava de travail dépend fortement de la configuration de vos ordinateurs:

  1. Vous devez utiliser le même 32 bits ou la version 64 bits pour les deux: R et JDK/JRE. Un mélange de cela ne marchera jamais (au moins pour moi).
  2. Si vous utilisez 64bit version assurez-vous que vous ne définissez pas JAVA_HOME comme nécessitant variable. Si cette variable est définie, rJava ne fonctionnera pas pour quelque raison que ce soit (au moins pour moi). Vous pouvez vérifier facilement dans R est JAVA_HOME est définie avec

    Sys.getenv("JAVA_HOME")
    

Si vous avez besoin d'avoir JAVA_HOME ensemble (par exemple, vous en avez besoin pour maven ou autre chose), vous pouvez le désactiver à l'intérieur de votre R-session avec le code suivant avant le chargement rJava:

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

Ceci devrait faire l'affaire dans la plupart des cas. En outre, ce sera corriger problème à l'Aide de la rJava paquet sur Win7 64 bits avec R, trop. J'ai emprunté l'idée de la suppression de l'nécessitant de la variable R: rJava package installer défaut.

32voto

ROLO Points 2464

Pour moi, le paramètre JAVA_HOME a fait le tour (au lieu de désarmer, comme dans une autre réponse donnée ici). Sous Windows :

Ou à l’intérieur de gauche à droite :

Mais ce qui est probablement la meilleure solution (depuis rJava 0,9-4) est prépondérant le JAVA_HOME Windows affectant au total :

8voto

BondedDust Points 105234

La dernière question a une réponse facile:

> .Machine$sizeof.pointer
[1] 8

Ce qui signifie que je suis en cours d'exécution R64. Si je étaient en cours d'exécution 32 bits R, il serait de retour 4. Juste parce que vous exécutez une version 64 bits de l'OS ne signifie pas que vous être en cours d'exécution 64 bits R, et à partir du message d'erreur, il semble que vous ne l'êtes pas.

EDIT: Si le paquet a des binaires, alors qu'ils sont dans des répertoires distincts. Les détails dépendent de l'OS. Notez que votre LoadLibrary erreur s'est produite quand il a tenté de trouver la dll dans ...rJava/libs/x64/... Sur mon système MacOS ...rJava/libs/... dossier a 3 sous-répertoires: i386, ppc, et x86_64. (Le ppc fichiers sont évidemment inutile de bagages.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X