Verwenden des rJava-Pakets unter Win7 64-Bit mit R.


149

Ich versuche, rJavaauf einem Computer mit Win 7 64-Bit zu installieren . Wenn ich renne

install.packages("rJava")

alles scheint in Ordnung zu sein:

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

Beim Versuch, die Bibliothek zu laden library(rJava), wird jedoch der folgende Fehler angezeigt:

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'

Ich habe die Java-JRE (32- und 64-Bit-Versionen) und das JDK (32- und 64-Bit-Versionen) installiert. Meine R-Version ist R version 2.13.1 (2011-07-08)und ich benutze RStudio.

Wenn ich versuche, 32-Bit-R zu verwenden, kann ich gut laden rJava. Ist das Problem nur, dass rJavanicht in R 64 Bit läuft? Wie kann ich feststellen, ob ein Paket nur für 32 statt für 64 ist?


bearbeiten: gerade gepostet 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)"

Können Sie bitte die Ergebnisse R.Version()Ihrer Frage einfügen ? Ich habe gerade die 64-Bit-Version rJavamit genau der Methode installiert, die Sie in Ihrer Frage beschrieben haben. Ich vermute, dass Ihre Version von R 32 Bit ist.
Andrie

Bitte teilen Sie Ihre und wie Sie es gelöst haben.
BigData

1
Wenn Sie hier einen Kommentar hinzufügen, kann dies jemandem helfen, die gesamte Lösungsliste durchzugehen. Wenn Sie den obigen Fehler erhalten, überprüfen Sie, ob sich Java in Program Filesoder befindet Program Files (x86). Fügen Sie Windows einen Pfad hinzu, wie in der akzeptierten Antwort angegeben. Wenn Program Files (x86)Sie über eine 32-Bit-Version verfügen, folgen Sie dem Link sites.google.com/site/rforfishandwildlifegrads/home/week_2/… .
Divi

Antworten:


154

Update (Juli 2018):

Die neueste CRAN-Version von rJava findet das jvm.dllautomatisch, ohne das PATHoder manuell einzustellen JAVA_HOME. Beachten Sie jedoch Folgendes:

  • Um rJava in 32-Bit-R verwenden zu können, benötigen Sie Java für Windows x86
  • Um rJava in 64-Bit R verwenden zu können, benötigen Sie Java für Windows x64
  • Um R-Pakete mit Multi-Arch (Standardeinstellung) zu erstellen oder zu überprüfen, müssen Sie sowohl Java für Windows x64 als auch Java für Windows x86 installieren . Unter Win 64 werden erstere installiert C:\Program files\Java\und letztere installiert, C:\Program Files (x86)\Java\damit keine Konflikte auftreten.

Ab Java Version 9 wurde die Unterstützung für x86 (win32) eingestellt. Daher besteht das neueste funktionierende Multi-Arch-Setup darin, sowohl jdk-8u172-windows-i586.exe als auch jdk-8u172-windows-x64.exe und dann das Binärpaket von CRAN zu installieren :

install.packages("rJava")

Das Binärpaket von CRAN sollte das JVM von selbst aufnehmen. Nur für Experten : Um rJava aus dem Quellcode zu erstellen, benötigen Sie das --merge-multiarchFlag:

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

Alte Antwort:

(Hinweis: Viele Leute in anderen Antworten / Kommentaren haben gesagt, JAVA_HOME zu entfernen. Bedenken Sie dies. Ich habe dieses Problem kürzlich nicht erneut untersucht, um zu erfahren, ob alle folgenden Schritte noch erforderlich sind.)

Hier finden Sie einige schnelle Tipps zur Inbetriebnahme von R + rJava unter Windows 7 64-Bit. Es gibt mehrere Möglichkeiten, aber die meisten weisen schwerwiegende Mängel auf. Folgendes hat bei mir funktioniert:

Fügen Sie jvm.dll zu Ihrem PFAD hinzu

rJava, die R <-> Java-Brücke, benötigt jvm.dll, aber R wird Probleme haben, diese DLL zu finden. Es befindet sich in einem Ordner wie

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

oder

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

Fügen Sie dieses Verzeichnis, wo immer es sich bei Ihnen befindet, zu Ihrer Windows-PATH-Variablen hinzu. (Windows -> "Pfad" -> "Umgebungsvariablen für Ihr Konto bearbeiten" -> PFAD -> Wert bearbeiten.)

Möglicherweise haben Sie bereits Java auf Ihrem PATH. In diesem Fall sollten Sie das Client / Server-Verzeichnis im selben Java-Verzeichnis "home" finden, das sich bereits in Ihrem PATH befindet.

Stellen Sie aus Sicherheitsgründen sicher, dass Ihre Architekturen übereinstimmen. Wenn Sie Java verwenden Program Files, ist es 64-Bit, daher sollten Sie R64 ausführen. Wenn Sie Java Program Files (x86)haben, ist das 32-Bit, also verwenden Sie einfaches 32-Bit R.

Starten Sie R über das Windows-Menü neu

Wenn R ausgeführt wird, beenden Sie das Programm.

Starten Sie im Startmenü R / RGUI, RStudio. Dies ist sehr wichtig, damit R Ihre PATH-Änderungen aufnimmt.

Installieren Sie rJava 0.9.2.

Frühere Versionen funktionieren nicht! Spiegel sind nicht auf dem neuesten Stand. Gehen Sie daher zur Quelle unter www.rforge.net: http://www.rforge.net/rJava/files/ . Beachten Sie die dortigen Hinweise

“Please use

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

to install.”

Das ist fast richtig. Das funktioniert tatsächlich:

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

Achte auf die Interpunktion! Das mysteriöse ".libPaths () [1]" weist R lediglich an, das Paket im primären Bibliotheksverzeichnis zu installieren. Aus irgendeinem Grund funktioniert es nicht, den Wert leer zu lassen, obwohl dies standardmäßig der Fall sein sollte.


4
Anstatt das zweite Argument leer zu lassen, können Sie es einfach tun install.packages('rJava', repos='http://www.rforge.net/').
Ken Williams

2
Wie in der Antwort von @ user2161065 ausgeführt, erfordert das Laden von rJava das Entfernen der Variablen JAVA_HOME
David LeBauer

1
Obwohl all dies erforderlich sein könnte, musste ich JAVA_HOME auch danach deaktivieren, wie von @ user2161065
ajkl

3
+1 Hinzufügen ...\jre\bin\serverzu Pfad behoben es für mich
mchen

6
Wo finden wir diese "Windows PATH" -Variable?
Shreyes

114

Damit rJava funktioniert, hängt stark von der Konfiguration Ihres Computers ab:

  1. Sie müssen für beide dieselbe 32-Bit- oder 64-Bit-Version verwenden: R und JDK / JRE. Eine Mischung davon wird niemals funktionieren (zumindest für mich).
  2. Wenn Sie eine 64-Bit- Version verwenden, stellen Sie sicher, dass Sie JAVA_HOME nicht als Umgebungsvariable festlegen. Wenn diese Variable gesetzt ist, funktioniert rJava aus irgendeinem Grund nicht (zumindest für mich). Sie können in R leicht überprüfen, ob JAVA_HOME mit gesetzt ist

    Sys.getenv("JAVA_HOME")

Wenn Sie JAVA_HOME einstellen müssen (z. B. für Maven oder etwas anderes), können Sie es in Ihrer R-Sitzung mit dem folgenden Code deaktivieren, bevor Sie rJava laden:

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

Dies sollte in den meisten Fällen ausreichen. Außerdem wird dadurch das Problem behoben, dass das rJava-Paket unter Win7 64-Bit auch mit R verwendet wird. Ich habe mir die Idee geliehen, die Umgebungsvariable von der fehlgeschlagenen Installation des R: rJava-Pakets zu entfernen .


20
Die vorherigen Lösungen funktionierten nicht, bis ich JAVA_HOME loswurde. Das ist der Schlüssel.
bshor

15
Dieses JAVA_HOME-Problem sollte rJava als Fehler gemeldet werden.
Lehrlingswarteschlange

2
Das hat mir wirklich geholfen: if (Sys.getenv ("JAVA_HOME")! = "") Sys.setenv (JAVA_HOME = "") Bibliothek (rJava) Danke @ user2161065
ajkl

Das Hinzufügen dieses Skripts zum Entfernen der JAVA_HOME-Variable hat bei mir funktioniert!
Richard

1
Diese Lösung funktioniert auch für Pakete wie XLConnect und XLConnectJars, die von rJava abhängen. (Ich schreibe diesen offensichtlichen Kommentar, damit Suchmaschinen diese Seite leichter finden können als die Probleme, die ich beim Finden hatte.)
Tripartio

31

Für mich hat das Setzen von JAVA_HOME den Trick getan (anstatt das Setzen aufzuheben, wie in einer anderen hier gegebenen Antwort). Entweder unter Windows:

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

Oder in R:

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

Aber was wahrscheinlich die beste Lösung ist (seit rJava 0.9-4), ist das Überschreiben der Windows JAVA_HOME-Einstellung in R insgesamt:

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

2
+1 beim Überschreiben der JAVA_HOME env-Variablen und Einstellung in R.
Carnust

Mein JAVA_HOME wurde auf einen JDK-Ordner festgelegt (wie auch bei der Java-Entwicklung), und rJava hatte ihn nicht. Ich habe Ihr letztes Update (Optionen) verwendet, da ich mich nicht mit einer gut funktionierenden Java-Entwicklungsumgebung anlegen möchte. Vielen Dank!
Chaslewis

1
options(java.home="my\\path\\to\\jre")funktionierte, als alles andere fehlschlug, einschließlich der Einstellung der Umgebung PATH
Daniel Krizian

Das hat bei mir funktioniert : options(java.home="C:\\Program Files\\Java\\jdk1.8.0_144\\jre"). Wenn Sie jdk1.8 haben.
Saubhik

Mit Adopt Open JDK hat dieser letzte Vorschlag für mich funktioniert. Alle anderen gängigen Lösungen sind fehlgeschlagen.
Ola Caster

7

Die letzte Frage hat eine einfache Antwort:

> .Machine$sizeof.pointer
[1] 8

Das heißt, ich verwende R64. Wenn ich 32-Bit-R ausführen würde, würde es 4 zurückgeben. Nur weil Sie ein 64-Bit-Betriebssystem ausführen, bedeutet dies nicht, dass Sie 64-Bit-R ausführen, und aus der Fehlermeldung geht hervor, dass dies nicht der Fall ist.

BEARBEITEN: Wenn das Paket Binärdateien enthält, befinden sich diese in separaten Verzeichnissen. Die Einzelheiten hängen vom Betriebssystem ab. Beachten Sie, dass Ihr LoadLibrary-Fehler aufgetreten ist, als versucht wurde, die DLL in ...rJava/libs/x64/... meinem MacOS-System zu finden. Der Ordner ... rJava / libs / ... `verfügt über 3 Unterverzeichnisse: i386, ppc und x86_64. (Die ppc-Dateien sind offensichtlich nutzloses Gepäck.)


Meine RStudio-Installation zeigte auf 64 Bit R. Als ich sie auf 32 Bit änderte, konnte ich das rJavaPaket importieren . Deshalb bin ich so verwirrt über die Fehlermeldung, da sie genau das Gegenteil von dem zu sein scheint, was gerade passiert.
DJQ

4

Entschuldigung für Nekro. Ich bin auch auf das gleiche Problem gestoßen und habe herausgefunden, dass rJavaerwartet wird JAVA_HOME, auf JRE zu verweisen. Wenn Sie JDK installiert haben, verweisen Sie höchstwahrscheinlich JAVA_HOMEauf JDK. Meine schnelle Lösung:

Sys.setenv(JAVA_HOME=paste(Sys.getenv("JAVA_HOME"), "jre", sep="\\"))

3

Ich hatte einige Probleme bei der Ermittlung des Java-Pakets, das installiert wurde, als ich auf dieses Problem stieß, da die vorherigen Antworten für mich nicht genau funktionierten. Um das zu klären, habe ich Folgendes eingegeben:

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

und dann drücken Sie die Tabulatortaste und die beiden vorgeschlagenen Verzeichnisse waren "jre1.8.0_31 /" und "jre7 /".

Jre7 hat mein Problem nicht gelöst, jre1.8.0_31 / jedoch. Die endgültige Antwort lief (vor der Bibliothek (rJava)):

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

Ich verwende 64-Bit-Windows 8.1. Ich hoffe, dies hilft jemand anderem.

Aktualisieren:

Überprüfen Sie Ihre Version, um festzustellen, was X sein soll (meine hat sich seit diesem Beitrag mehrmals geändert):

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

3

Ich hatte ein ähnliches Problem mit rJava. Es würde geladen, aber ein Paket, das davon abhängt, würde nicht geladen.

Benutzer verschwenden möglicherweise viel Zeit mit jvm.dll und PATH und JAVA_HOME, wenn die eigentliche Lösung darin besteht, das Installationsprogramm zu zwingen, i386 einfach zu vergessen. Verwenden Sie die Option für install.packages. (Dies funktioniert auch, wenn die Drat-Bibliothek verwendet wird. (Gutschrift geht an Dason.)

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

Sie können auch nur Ihren Benutzerpfad mit einem Win-Befehl wie dem folgenden ändern:

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

0

Ich brauche eine 32-Bit-JRE für meinen Browser, aber eine 64-Bit-JRE für R und rJava. Die 32-Bit-JRE wird am Standardspeicherort installiert. Nach einigen Experimenten stellte ich fest, dass ich nur einen Vorschlag von Misterbee brauchte , um rJava (Version 0.9-6 ) für mich arbeiten zu lassen. Ich habe lediglich den Pfad zu meiner 64-Bit-Java-Installation hinzugefügt:

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

zum Anfang meiner Pfadumgebungsvariablen (Ihr Pfad wird wahrscheinlich anders sein) und entfernen Sie mein JAVA_HOME, wie von user2161065 vorgeschlagen. Ich habe dies direkt vor den Eintrag gestellt

C:\ProgramData\Oracle\Java\javapath

Das Oracle-Installationsprogramm fügt oben im Pfad ein und verweist auf einige Symlinks zur 32-Bit-JRE. Durch Hinzufügen des Eintrags zu 64-Bit-jvm.dll könnte rJava das finden, was es benötigt.


0

Ich denke das ist ein Update. Ich konnte rJava (unter Windows) erst installieren, als ich das JDK installiert habe, da Javac nicht gefunden wird und Javac nicht in der Windows-Eingabeaufforderung funktioniert . Die Nachricht, die ich bekam, war

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

Das JDK enthält die JRE und laut https://cran.r-project.org/web/packages/rJava/index.html die aktuelle Version (0.9-7 veröffentlicht am 29.07.2015) von rJava

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

Da sind Sie also: Wenn rJava nicht installiert werden kann, weil es javac nicht findet, und Sie die JRE installiert haben, versuchen Sie es mit dem JDK. JAVA_HOMEStellen Sie außerdem sicher, dass dies auf das JDK und nicht auf die JRE verweist.


Ich stelle fest, dass dies im Grunde das Gegenteil von dem ist, was @friendzis gesagt hat.
Woodvi

Kann rJava Entwickler etwas Klarheit in dieses Problem bringen, pls
userJT

0

Ich habe das Problem gelöst, indem ich scheinbar redundante Java-Software von meinem Windows 7 x64-Computer deinstalliert habe . Dies wurde erreicht, indem zuerst alle Java-Anwendungen deinstalliert und dann eine neue Java-Version installiert wurden . (Später habe ich R 3.4.3 x86_64-w64-mingw32 auf den Java-Pfad verwiesen , um nur zu erwähnen, obwohl ich nicht glaube, dass dies das eigentliche Problem war.) Heute war nur noch Java 8 Update 161 (64-Bit) 8.0.1610.12 übrig dann. Danach hat install.packages("rJava"); library(rJava)es perfekt funktioniert.


0

Dies ist eine Fortsetzung von Update (Juli 2018). Ich bin auf 64-Bit-Windows 10, aber eingerichtet, um r-Pakete aus dem Quellcode für 32- und 64-Bit mit Rtools zu erstellen. Mein 64-Bit-JDK ist JDK-11.0.2. Wenn ich kann, mache ich alles in RStudio. Ab März 2019 wird rjava mit <= jdk11 getestet, siehe Github-Ausgabe Nr. 157 .

  • Installieren Sie jdks per Update (Juli 2018) von @Jeroen an ihrem Standardspeicherort.
  • Setzen Sie in R Studio JAVA_HOME auf den 64-Bit-JDK

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

  • Überprüfen Sie optional Ihre Umgebungsvariable

Sys.getenv("JAVA_HOME")

  • Installieren Sie das Paket gemäß der Empfehlung für die Github-Seite

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

Zu Ihrer Information, die rstudio-Skriptkonsole mag keine Doppelkommas ... aber es funktioniert!


0
  1. Laden Sie Java von https://java.com/de/download/windows-64bit.jsp für 64-Bit-Fenster herunter. \ Installieren Sie es
  2. Laden Sie das Java Development Kit von https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html für 64-Bit-Windows herunter und installieren Sie es
  3. Klicken Sie dann mit der rechten Maustaste auf das Symbol "Dieser PC" unter Desktop \ Eigenschaften \ Erweiterte Systemeinstellungen \ Erweitert \ Umgebungsvariablen \ Wählen Sie unter Systemvariablen Pfad \ Klicken Sie auf Bearbeiten \ Klicken Sie auf Neu \ Pfade kopieren und einfügen "C: \ Programme \ Java \ jdk1 .8.0_201 \ bin ”und“ C: \ Programme \ Java \ jre1.8.0_201 \ bin ”(ohne Anführungszeichen) \ OK \ OK \ OK

Hinweis: jdk1.8.0_201 und jre1.8.0_201 werden abhängig von der Version des Java Development Kit und von Java geändert

  1. Gehen Sie im Fenster Umgebungsvariablen zu Benutzervariablen für Benutzer \ Klicken Sie auf Neu \ Variablenname als "JAVA_HOME" und Variablenwert als "C: \ Programme \ Java \ jdk1.8.0_201 \ bin" \ Drücken Sie OK

Um die Installation zu überprüfen, öffnen Sie CMD \ Typ javac \ Drücken Sie die Eingabetaste und geben Sie Java ein \ drücken Sie die Eingabetaste. Es wird angezeigt Geben Sie hier die Bildbeschreibung ein

In RStudio laufen

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

Hinweis: jdk1.8.0_201 wird abhängig von der Version des Java Development Kit geändert

Jetzt können Sie das rJava-Paket problemlos installieren und laden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.