Utilisation du paquet Rjava sur Win7 64 bit avec R

j'essaie d'installer rJava sur un ordinateur avec Win 7 64 bit. Quand je cours

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:TEMPRtmpW2eAUwdownloaded_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 (en essayant les versions 32 et 64 bits) et le JDK (en utilisant les versions 32 et 64 bits). Ma version R est R version 2.13.1 (2011-07-08) et j'utilise RStudio.

si j'essaie d'utiliser 32 bits R, je peux charger rJava très bien. Est-ce que le problème est juste que rJava ne fonctionne pas en r 64 bit? Comment savoir si un paquet est juste pour 32 au lieu de 64?


edit: viens de poster 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)"
139
demandé sur djq 2011-08-11 05:37:44

10 réponses

Mise À Jour (Juillet 2018):

la dernière version de CRAN de rJava trouvera le jvm.dll automatiquement, sans régler manuellement le PATH ou JAVA_HOME . Notez cependant que:

  • pour utiliser rJava en 32 bits R, Vous avez besoin de Java for Windows x86
  • pour utiliser Rjava en 64-bit R, Vous avez besoin de Java for Windows x64
  • pour construire ou vérifier des paquets R avec multi-arch (par défaut), vous devez installer à la fois Java pour Windows x64 et Java pour Windows x86 . Sur Win 64, le premier s'installe dans C:\Program files\Java\ et le second dans C:\Program Files (x86)\Java\ de sorte qu'ils ne sont pas en conflit.

depuis la version Java 9, le support de x86 (win32) a été abandonné. Par conséquent, la dernière configuration multi-Arches est d'installer les deux jdk-8u172-windows-i586.exe et jdk-8u172-windows-x64.exe puis le paquet binaire de CRAN:

install.packages("rJava")

le paquet binaire de CRAN devrait prendre le jvm par lui-même. Experts seulement : pour construire rJava à partir de la source, vous avez besoin du drapeau --merge-multiarch :

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

Vieille réponse:

(Note: beaucoup de gens dans d'autres réponses/commentaires ont dit de supprimer JAVA_HOME, alors considérez 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 démarrer avec R + rJava sur Windows 7 64bit. Il y a plusieurs possibilités, mais la plupart ont des défauts fatals. Voici ce qui a fonctionné pour moi:

ajouter jvm.dll vers votre chemin

rJava, le R<->Java bridge, aura besoin de la 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ù que vous soyez, Ajoutez ce répertoire à votre variable Windows PATH. (Windows -> "Chemin" -> "Modifier les variables d'environnement de votre compte" -> CHEMIN -> modifier la valeur.)

vous pouvez déjà avoir Java sur votre CHEMIN. Si c'est le cas, vous devriez trouver le répertoire client/serveur dans le même répertoire Java "home" que celui qui se trouve déjà sur votre chemin.

pour être sûr, assurez-vous que vos architectures correspondent.Si vous avez Java dans Program Files , il est 64 bits, donc vous devez exécuter R64. Si vous avez Java dans Program Files (x86) , c'est 32 bits, donc vous utilisez tout simplement 32 bits R.

Re-lancement de R à partir du Menu Windows

si R est en cours d'exécution, arrêter.

à partir du Menu Démarrer , Démarrer R / RGUI, RStudio. C'est très important, pour faire r ramasser vos changements de chemin.

Installer rJava 0.9.2.

les versions précédentes ne fonctionnent pas! Les miroirs ne sont pas à jour, donc allez à la source à www.rforge.net: http://www.rforge.net/rJava/files / . Notez le Conseil là

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

regardez la ponctuation! Le mystérieux ".libPaths () [1]," dit simplement à R d'installer le paquet dans le répertoire de la bibliothèque primaire. Pour une raison quelconque, laisser la valeur vide ne fonctionne pas, même si elle devrait être par défaut.

134
répondu misterbee 2018-07-05 21:47:22

faire fonctionner rJava dépend fortement de la configuration de votre ordinateur:

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

    Sys.getenv("JAVA_HOME")
    

si vous avez besoin de JAVA_HOME défini (par exemple vous en avez besoin pour maven ou autre chose), vous pouvez le désactiver dans votre session R avec le code suivant avant de charger rJava:

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

Cela devrait faire l'affaire dans la plupart des cas. De plus, cela réglera le problème en utilisant le paquet Rjava sur Win7 64 bit avec R, trop. J'ai emprunté l'idée de désactiver la variable d'environnement de R: rjava package install failing .

105
répondu user2161065 2017-05-23 12:17:59

Pour moi, réglage JAVA_HOME a fait le tour (au lieu de désactiver, comme dans une autre réponse ici). Soit dans Windows:

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

Ou à l'intérieur R:

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

mais ce qui est probablement la meilleure solution (depuis rjava 0.9-4) est supérieur dans le paramètre JAVA_HOME de Windows tout à fait:

options(java.home="C:\Program Files\Java\jre7\")
library(rJava)
28
répondu ROLO 2015-01-08 13:20:22

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

> .Machine$sizeof.pointer
[1] 8

ce qui signifie que J'exécute R64. Si je courais 32 bit R, il reviendrait 4. Juste parce que vous exécutez un OS 64 bits ne signifie pas que vous exécuterez un r 64 bits, et à partir du message d'erreur il semble que vous ne le soyez pas.

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

7
répondu 42- 2011-08-11 11:53:07

désolé pour necro. J'ai aussi rencontré le même problème et découvert que rJava s'attend à ce que JAVA_HOME pointe à JRE. Si vous avez installé JDK, très probablement votre JAVA_HOME pointera vers JDK. Ma solution rapide:

Sys.setenv(JAVA_HOME=paste(Sys.getenv("JAVA_HOME"), "jre", sep="\"))
4
répondu friendzis 2015-07-20 13:03:06

j'ai eu quelques difficultés à déterminer le paquet Java qui a été installé lorsque j'ai rencontré ce problème, puisque les réponses précédentes ne fonctionnaient pas exactement pour moi. Pour régler ça, j'ai tapé:

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

puis appuyez sur tab et les deux répertoires suggérés sont" jre1.8.0_31 / "et" jre7/ "

Jre7 n'a pas résolu mon problème, mais jre1.8.0_31 did. La réponse finale était en cours d'exécution (avant la bibliothèque(rjava)):

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

j'utilise Windows 8.1 à 64 bits J'espère que cela aidera quelqu'un d'autre.

mise à jour:

Vérifiez votre version pour déterminer ce que X devrait être (la mienne a changé plusieurs fois depuis ce post):

Sys.setenv(JAVA_HOME="C:/Program Files/Java/jre1.8.0_x/")
3
répondu Optimus 2015-07-27 20:03:38

j'ai eu un problème connexe avec rJava. Il se chargerait mais un paquet qui en dépend ne se chargerait pas.

les utilisateurs peuvent perdre beaucoup de temps avec jvm.dll et chemin et JAVA_HOME quand le vrai correctif est de forcer l'installateur à oublier i386. Utiliser l'option pour installer.paquet. (cela fonctionne également lorsque la bibliothèque drat est utilisée. (crédit à Dason)

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

aussi, vous pouvez modifier juste votre chemin d'utilisateur avec une commande win comme ceci:

setx PATH "C:\Program Files\Java\jre1.8.0_102\bin\server;%PATH%"
3
répondu userJT 2016-08-29 15:56:06

j'ai besoin d'avoir un JRE 32 bits disponible pour mon navigateur, mais un JRE 64 bits pour R et rJava. Le JRE 32 bits est installé dans l'emplacement par défaut. Après quelques expérimentations, j'ai trouvé que j'avais seulement besoin d'une des suggestions de misterbee pour obtenir rJava (version 0.9-6 ) il travaille pour moi. Tout ce que j'ai fait c'est ajouter le chemin à mon installation java 64 bits:

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

vers le haut de ma variable d'environnement path (le chemin sera probablement être différent) et supprimer mon JAVA_HOME comme utilisateur 2161065 suggéré. J'ai mis cela juste avant l'entrée

C:\ProgramData\Oracle\Java\javapath

que L'installateur Oracle insère en haut du chemin et pointe vers quelques liens symboliques vers le JRE 32 bits. En ajoutant l'entrée à 64 bits jvm.dll, on dirait que rJava pourrait trouver ce dont elle a besoin.

0
répondu Michael Szczepaniak 2015-07-14 18:54:42

je pense que c'est une mise à jour. J'ai été incapable d'installer rJava (sur Windows) jusqu'à ce que j'installe le JDK, selon Javac n'est pas trouvé et javac ne fonctionne pas dans windows invite de commande . Le message que j'ai reçu était

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

la JDK comprend la JRE, et selon https://cran.r-project.org/web/packages/rJava/index.html la version actuelle (0.9-7 publié en 2015-Jul-29) de rJava

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

donc vous êtes là: si rJava ne s'installe pas parce qu'il ne trouve pas javac, et que vous avez installé le JRE, alors essayez le JDK. Aussi, assurez-vous que JAVA_HOME pointe vers le JDK et non pas le JRE.

0
répondu woodvi 2017-05-23 12:02:40

j'ai résolu le problème par désinstaller apparemment redondant logiciel Java de ma machine windows 7 x64. Pour ce faire, j'ai d'abord désinstallé toutes les applications Java et puis en installant une nouvelle version Java . (Plus tard je pointait r 3.4.3 x86_64-w64-mingw32 vers le chemin Java , juste pour mentionner bien que je ne pense pas que ce soit le vrai problème.) Aujourd'hui Seulement mise à jour de Java 8 161 (64-bit) 8.0.1610.12 a été laissé alors. Après cela, install.packages("rJava"); library(rJava) a fonctionné parfaitement.

0
répondu jaySf 2018-02-22 07:53:31