web-dev-qa-db-fra.com

Utilisation du package rJava sur Win7 64 bits avec R

J'essaie d'installer rJava sur un ordinateur Windows 7 64 bits. Quand je cours

install.packages("rJava")

tout semble aller 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

mais lorsque j'ai essayé de charger la bibliothèque library(rJava), l'erreur suivante apparaît:

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é 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 fine. Est-ce que le problème est simplement que rJava ne fonctionne pas en R 64 bits? Comment puis-je savoir si un paquet est seulement pour 32 au lieu de 64?


modifier: vient de publier 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
djq

Mise à jour (juillet 2018):

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

  • Pour utiliser rJava en version 32 bits, vous avez besoin de Java pour Windows x86
  • Pour utiliser rJava dans une version 64 bits, vous avez besoin de Java pour Windows x64
  • Pour construire ou vérifier les packages R avec multi-Arch (valeur par défaut), vous devez installer les deux Java pour Windows x64 ainsi que Java pour Windows x86 . Sur Windows 64, le premier s'installe dans C:\Program files\Java\ et le dernier dans C:\Program Files (x86)\Java\ afin qu'ils ne soient pas en conflit.

À partir de Java version 9, la prise en charge de x86 (win32) n'est plus disponible. Par conséquent, la dernière configuration multi-Arch qui fonctionne consiste à installer à la fois 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 aller chercher le jvm par lui-même. uniquement des experts : pour créer rJava à partir du code source, vous avez besoin du drapeau --merge-multiarch:

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

Réponse ancienne:

(Remarque: de nombreuses personnes dans d'autres réponses/commentaires ont dit de supprimer Java_HOME, alors réfléchissez-y. Je n'ai pas revisité ce problème récemment pour savoir si toutes les étapes ci-dessous sont encore nécessaires.)

Voici quelques conseils rapides pour vous familiariser avec R + rJava sous Windows 7 64 bits. Il y a plusieurs possibilités, mais la plupart ont des défauts fatals. Voici ce qui a fonctionné pour moi:

Ajoutez jvm.dll à votre PATH

rJava, le pont R <-> Java, aura besoin de 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 pour votre compte" -> CHEMIN -> modifier la valeur.)

Vous avez peut-être déjà 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 déjà présent dans votre PATH.

Pour plus de sécurité, assurez-vous que vos architectures correspondent. Si vous avez Java dans Program Files, il est en 64 bits, vous devez donc exécuter R64. Si vous avez Java dans Program Files (x86), c'est 32 bits, vous utilisez donc un R. 32 bits en clair.

Relancez R à partir du menu Windows

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

Dans le menu Démarrer, démarrez R/RGUI, RStudio. Ceci est très important pour que R récupère vos modifications PATH.

Installez rJava 0.9.2.

Les versions précédentes ne fonctionnent pas! Les miroirs ne sont pas à jour, allez à la source sur 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]" indique simplement à R d’installer le paquet dans le répertoire de la bibliothèque principale. Pour une raison quelconque, laisser la valeur vide ne fonctionne pas, même si cela devrait être la valeur par défaut.

147
misterbee

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

  1. Vous devez utiliser la même version 32 bits ou 64 bits pour les deux versions: R et JDK/JRE. Un mélange de cela ne fonctionnera jamais (du moins pour moi).
  2. Si vous utilisez la version 64 bits, assurez-vous que ne définissez pas Java_HOME en tant que variable d’environnement. Si cette variable est définie, rJava ne fonctionnera pas pour quelque raison que ce soit (du moins pour moi). Vous pouvez vérifier facilement dans R si Java_HOME est défini avec

    Sys.getenv("Java_HOME")
    

Si vous avez besoin de définir Java_HOME (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 corrigera le problème Utilisation du package rJava sous Win7 64 bits avec R également. J'ai emprunté l'idée de désactiver la variable d'environnement de R: L'installation du package rJava a échoué .

105
user2161065

Pour moi, setting Java_HOME a fait l'affaire (au lieu de le désactiver, comme dans une autre réponse donnée ici). Soit sous Windows:

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

Ou à l'intérieur de R:

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

Mais ce qui est probablement la meilleure solution (depuis rJava 0.9-4) annule dans R le paramètre Windows Java_HOME:

options(Java.home="C:\\Program Files\\Java\\jre7\\")
library(rJava)
28
ROLO

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

> .Machine$sizeof.pointer
[1] 8

Ce qui signifie que je cours R64. Si j’exécutais le 32 bits R, il renverrait 4. Ce n’est pas parce que vous utilisez un système d’exploitation 64 bits que vous exécuterez le 64 bits. Le message d’erreur indique que ce n’est pas le cas. 

EDIT: Si le paquet contient des fichiers binaires, ils se trouvent dans des répertoires séparés. Les détails dépendront du système d'exploitation. Notez que votre erreur LoadLibrary s'est produite lors de la tentative de recherche de la dll dans ...rJava/libs/x64/... Sous MacOS, le dossier ... rJava/libs/... `comporte 3 sous-répertoires: i386, ppc et x86_64. (Les fichiers ppc sont évidemment des bagages inutiles.)

7
42-

Désolé pour necro . J'ai rencontré le même problème et découvert que rJava s'attend à ce que Java_HOME pointe sur JRE. Si vous avez installé JDK, il est fort probable que votre Java_HOME pointe sur JDK. Ma solution rapide:

Sys.setenv(Java_HOME=paste(Sys.getenv("Java_HOME"), "jre", sep="\\"))
4
friendzis

J'ai eu quelques difficultés à déterminer le package Java installé lorsque j'ai rencontré ce problème, car les réponses précédentes ne fonctionnaient pas exactement pour moi. Pour résoudre ce problème, j'ai tapé:

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

puis appuyez sur l'onglet et les deux répertoires suggérés étaient "jre1.8.0_31 /" et "jre7 /"

Jre7 n'a pas résolu mon problème, mais jre1.8.0_31/l'a fait. 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 aide quelqu'un d'autre.

Mettre à jour:

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

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

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 risquent de perdre beaucoup de temps avec jvm.dll, PATH et Java_HOME lorsque le vrai correctif consiste à forcer le programme d'installation à oublier i386. Utilisez l'option pour install.packages. (Cela fonctionne aussi quand on utilise drat library. (le crédit revient à Dason)

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

En outre, vous pouvez modifier uniquement votre chemin d’utilisateur avec une commande win comme celle-ci:

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

Ceci est un suivi de Update (juillet 2018). Je suis sur Windows 10 64 bits, mais je suis configuré pour créer des packages à partir des sources pour 32 et 64 bits avec Rtools. Mon jdk 64 bits est jdk-11.0.2. Quand je peux, je fais tout dans RStudio. Depuis mars 2019, java est testé avec <= jdk11, voir github numéro 157 .

  • Installez jdks à leur emplacement par défaut lors de la mise à jour (juillet 2018) de @Jeroen.
  • Dans R studio, définissez Java_HOME sur le jdk 64 bits

Sys.setenv(Java_HOME="C:/Program Files/Java/jdk-11.0.2")

  • Vérifiez éventuellement votre variable d'environnement

Sys.getenv("Java_HOME")

  • Installez le paquet en suivant la recommandation de la page github

install.packages("rJava",,"http://rforge.net")

Pour votre information, la console de script de rstudio n'aime pas les doubles virgules ... mais ça marche!

0
Aaron Dickey

J'ai besoin d'un JRE 32 bits disponible pour mon navigateur, mais de JRE 64 bits pour R et rJava. JRE 32 bits est installé à l'emplacement par défaut. Après quelques expériences, j'ai découvert que je n'avais besoin que d'une des suggestions de misterbee pour que rJava (version 0.9-6) fonctionne pour moi. J'ai seulement ajouté le chemin d'accès à mon installation Java 64 bits:

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

en haut de la variable d’environnement de mon chemin (votre chemin sera probablement différent) et supprimez Java_HOME comme indiqué par user2161065. Je mets cela juste avant l'entrée

C:\ProgramData\Oracle\Java\javapath

que le programme d’installation d’Oracle insère en haut du chemin et pointe vers des liens symboliques vers le JRE 32 bits. En ajoutant l'entrée à jvm.dll 64 bits, rjava pourrait trouver ce dont il a besoin.

0
Michael Szczepaniak

J'ai résolu le problème en désinstaller logiciel Java apparemment redondant à partir de ma machine Windows 7 x64. Pour ce faire, j'ai d'abord désinstallé toutes les applications Java, puis puis en installant une nouvelle version de Java. (Plus tard, je _ { j'ai indiqué R 3.4.3 x86_64-w64-mingw32 sur le chemin d'accès Java. }, Juste pour mentionner que je ne pense pas que ce soit le vrai problème.) Aujourd'hui, seule la mise à jour Java 8 161 (64 bits). ) 8.0.1610.12 a été laissé ensuite. Après cela, install.packages("rJava"); library(rJava) a parfaitement fonctionné.

0
jay.sf

Je pense que ceci est une mise à jour. Je ne pouvais pas installer rJava (sous Windows) avant d’avoir installé le JDK, comme indiqué dans Javac n’est pas trouvé Et javac ne fonctionne pas dans la commande Windows Invite . Le message que je recevais était

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

Le JDK inclut le JRE et, selon https://cran.r-project.org/web/packages/rJava/index.html La version actuelle (0.9-7 publiée en 2015- 29 juillet) De java

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

Vous y êtes donc: si rJava ne s’installe pas car il ne trouve pas javac et que le JRE est installé, essayez le JDK. Assurez-vous également que Java_HOME pointe vers le JDK et non vers le JRE.

0
woodvi
  1. Téléchargez Java à partir de https://Java.com/en/download/windows-64bit.jsp pour Windows 64 bits\Install it
  2. Téléchargez le kit de développement Java à partir de https://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html pour Windows 64 bits, installez-le.
  3. Cliquez ensuite avec le bouton droit de la souris sur l'icône «Ce PC» dans le bureau\Propriétés\Paramètres système avancés\Avancé\Variables d'environnement\Sous Variables système, sélectionnez Chemin\Cliquez Édition\Cliquez sur Nouveau\Copier et coller les chemins "C:\Programmes\Java\jdk1 .8.0_201\bin ”et“ C:\Program Files\Java\jre1.8.0_201\bin ”(sans guillemet)\OK\OK\OK

Remarque: jdk1.8.0_201 et jre1.8.0_201 seront modifiés en fonction de la version du kit de développement Java et de Java.

  1. Dans la fenêtre Variables d'environnement, accédez à Variables utilisateur pour Utilisateur\Cliquez sur Nouveau\Nom de la variable comme "Java_HOME" et la valeur de la variable comme "C:\Programmes\Java\jdk1.8.0_201\bin"\Appuyez sur OK.

Pour vérifier l’installation, ouvrez CMD\Tapez javac\Appuyez sur Entrée et tapez Java\appuyez sur Entrée. Il affichera  enter image description here

Dans RStudio run

Sys.setenv(Java_HOME="C:\\Program Files\\Java\\jdk1.8.0_201")

Remarque: jdk1.8.0_201 sera modifié en fonction de la version du kit de développement Java.

Maintenant, vous pouvez installer et charger le paquet rJava sans aucun problème.

0
Bappa Das