Utilizzando il pacchetto rJava su Win7 64 bit con R


149

Sto cercando di installare rJavasu un computer con Win 7 64 bit. Quando corro

install.packages("rJava")

tutto sembra andare bene:

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

ma quando ho provato a caricare la libreria library(rJava)ottengo il seguente errore:

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'

Ho installato Java JRE (provando entrambe le versioni a 32 e 64 bit) e JDK (usando entrambi a 32 e 64 bit). La mia versione R è R version 2.13.1 (2011-07-08)e sto usando RStudio.

Se provo ad usare la R a 32 bit, posso caricare rJavabene. Il problema è che rJavanon funziona in R 64 bit? Come posso sapere se un pacchetto è solo per 32 anziché 64?


modifica: appena pubblicato 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)"

Puoi per favore incollare i risultati della R.Version()tua domanda? Ho appena installato la versione a 64 bit rJavausando il metodo esatto che descrivi nella tua domanda. Suppongo che la tua versione di R sia a 32 bit.
Andrie,

per favore condividi il tuo ans come lo hai risolto.
bigData

1
L'aggiunta di un commento qui può aiutare qualcuno a passare attraverso l'intero elenco di soluzioni. Se viene visualizzato l'errore sopra riportato, verificare se Java è in Program Fileso Program Files (x86). Aggiungi il percorso a Windows come dice la risposta accettata. Se Program Files (x86), significa che hai una versione a 32 bit, segui il link sites.google.com/site/rforfishandwildlifegrads/home/week_2/… .
Divi,

Risposte:


154

Aggiornamento (luglio 2018):

L'ultima versione CRAN di rJava troverà jvm.dllautomaticamente, senza impostare manualmente PATHo JAVA_HOME. Tuttavia notare che:

  • Per utilizzare rJava in R a 32 bit, è necessario Java per Windows x86
  • Per utilizzare rJava in R a 64 bit, è necessario Java per Windows x64
  • Per compilare o controllare i pacchetti R con multi-arch (impostazione predefinita) è necessario installare sia Java per Windows x64 che Java per Windows x86 . Su Win 64, il primo si installa C:\Program files\Java\e il secondo in C:\Program Files (x86)\Java\modo che non siano in conflitto.

A partire dalla versione 9 di Java, il supporto per x86 (win32) è stato sospeso. Quindi l'ultima configurazione multi-arch funzionante è installare sia jdk-8u172-windows-i586.exe che jdk-8u172-windows-x64.exe e quindi il pacchetto binario da CRAN:

install.packages("rJava")

Il pacchetto binario di CRAN dovrebbe riprendere da solo sul jvm. Solo esperti : per compilare rJava dal sorgente, è necessario il --merge-multiarchflag:

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

Vecchia risposta:

(Nota: molte persone in altre risposte / commenti hanno detto di rimuovere JAVA_HOME, quindi considera questo. Di recente non ho rivisto questo problema per sapere se tutti i passaggi seguenti sono ancora necessari.)

Ecco alcuni consigli rapidi su come iniziare a utilizzare R + rJava su Windows 7 a 64 bit. Esistono diverse possibilità, ma la maggior parte presenta difetti fatali. Ecco cosa ha funzionato per me:

Aggiungi jvm.dll al tuo PERCORSO

rJava, il bridge Java R <->, avrà bisogno di jvm.dll, ma R avrà problemi a trovare quella DLL. Risiede in una cartella come

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

o

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

Ovunque sia il tuo, aggiungi quella directory alla variabile PATH di Windows. (Windows -> "Percorso" -> "Modifica variabili di ambiente in per il tuo account" -> PERCORSO -> modifica il valore.)

Potresti già avere Java sul tuo PERCORSO. In tal caso dovresti trovare la directory client / server nella stessa directory "home" Java di quella già presente sul tuo PERCORSO.

Per sicurezza, assicurati che le tue architetture corrispondano. Se hai Java in Program Files, è a 64 bit, quindi dovresti eseguire R64. Se hai Java in Program Files (x86), è a 32 bit, quindi usi semplicemente R. a 32 bit

Riavvia R dal menu di Windows

Se R è in esecuzione, esci.

Dal menu Start, Avvia R / RGUI, RStudio. Questo è molto importante per fare in modo che R rilevi le tue modifiche al PERCORSO.

Installa rJava 0.9.2.

Le versioni precedenti non funzionano! Gli specchi non sono aggiornati, quindi vai alla fonte su www.rforge.net: http://www.rforge.net/rJava/files/ . Nota il consiglio lì

“Please use

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

to install.”

È quasi corretto. Questo funziona davvero:

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

Guarda la punteggiatura! Il misterioso ".libPaths () [1]" dice a R di installare il pacchetto nella directory della libreria principale. Per qualche motivo, lasciare vuoto il valore non funziona, anche se dovrebbe essere predefinito.


4
Invece di lasciare vuoto il secondo argomento, puoi semplicemente farlo install.packages('rJava', repos='http://www.rforge.net/').
Ken Williams

2
Come sottolineato nella risposta di @ user2161065, il caricamento di rJava richiede la rimozione della variabile JAVA_HOME
David LeBauer

1
Anche se tutto ciò potrebbe essere necessario, anche dopo aver fatto questo ho dovuto disinserire JAVA_HOME come suggerito da @ user2161065
ajkl

3
+1 L'aggiunta ...\jre\bin\serveral percorso fisso per me
mchen

6
Dove possiamo trovare questa variabile "Windows PATH"?
Shreyes,

114

Far funzionare rJava dipende fortemente dalla configurazione del tuo computer:

  1. Devi usare la stessa versione a 32 o 64 bit per entrambi: R e JDK / JRE. Una miscela di questo non funzionerà mai (almeno per me).
  2. Se si utilizza la versione a 64 bit , accertarsi di non impostare JAVA_HOME come variabile di ambiente. Se questa variabile è impostata, rJava non funzionerà per nessun motivo (almeno per me). Puoi controllare facilmente all'interno di R se JAVA_HOME è impostato con

    Sys.getenv("JAVA_HOME")

Se hai bisogno di avere JAVA_HOME impostato (ad es. Ne hai bisogno per Maven o qualcos'altro), potresti disattivarlo all'interno della tua sessione R con il seguente codice prima di caricare rJava:

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

Questo dovrebbe fare il trucco nella maggior parte dei casi. Inoltre questo risolverà il problema Usando anche il pacchetto rJava su Win7 64 bit con R. Ho preso in prestito l'idea di annullare la variabile di ambiente dall'installazione del pacchetto R: rJava non riuscita .


20
Le soluzioni precedenti non funzionavano fino a quando non mi sono sbarazzato di JAVA_HOME. Questa è la chiave.
bshor,

15
Questo problema JAVA_HOME dovrebbe essere segnalato a rJava come bug.
Apprentice Queue,

2
Questo mi ha davvero aiutato: if (Sys.getenv ("JAVA_HOME")! = "") Sys.setenv (JAVA_HOME = "") library (rJava) Thanks @ user2161065
ajkl

aggiungendo quello script per rimuovere la variante JAVA_HOME ha funzionato per me!
Richard,

1
Questa soluzione funziona anche per pacchetti come XLConnect e XLConnectJars che dipendono da rJava. (Sto scrivendo questo ovvio commento in modo che i motori di ricerca possano riprendere questa pagina più facilmente rispetto ai problemi che ho avuto a trovarlo.)
Tripartio

31

Per me, l' impostazione di JAVA_HOME ha fatto il trucco (invece di disinserire, come in un'altra risposta fornita qui). In Windows:

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

O dentro R:

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

Ma qual è probabilmente la soluzione migliore (dal momento che rJava 0.9-4) sta scavalcando completamente l'impostazione JAVA_HOME di Windows:

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

2
+1 sul ignorando la variabile JAVA_HOME ENV e l'impostazione in R.
carnust

Il mio JAVA_HOME era impostato su una cartella JDK (come anche io sviluppo Java), e rJava non ce l'aveva. Ho usato la tua ultima correzione (opzioni) poiché non voglio fare casino con un ambiente di sviluppo Java ben funzionante. Grazie!
Chaslewis

1
options(java.home="my\\path\\to\\jre")ha funzionato, quando tutto il resto ha fallito, compresa l'impostazione dell'ambiente PERCORSO
Daniel Krizian,

Questo ha funzionato per me: options(java.home="C:\\Program Files\\Java\\jdk1.8.0_144\\jre"). Se hai jdk1.8.
Saubhik,

Usando Adotta Open JDK, quel suggerimento finale ha funzionato per me. Tutte le altre soluzioni popolari sono fallite.
Ola Caster,

7

L'ultima domanda ha una risposta semplice:

> .Machine$sizeof.pointer
[1] 8

Significa che sto eseguendo R64. Se avessi eseguito R a 32 bit, verrebbe restituito 4. Solo perché stai eseguendo un sistema operativo a 64 bit non significa che eseguirai 64 bit R, e dal messaggio di errore sembra che non lo sia.

EDIT: se il pacchetto ha binari, allora sono in directory separate. Le specifiche dipenderanno dal sistema operativo. Si noti che l'errore LoadLibrary si è verificato durante il tentativo di trovare la DLL in ...rJava/libs/x64/... Sul mio sistema MacOS la cartella ... rJava / libs / ... `ha 3 sottodirectory: i386, ppc e x86_64. (I file ppc sono ovviamente bagagli inutili.)


La mia installazione di RStudio puntava a 64 bit R. Quando l'ho cambiato a 32 bit, ho potuto importare il rJavapacchetto. Questo è il motivo per cui sono così confuso riguardo al messaggio di errore, poiché sembra essere esattamente l'opposto di quello che sta succedendo.
djq,

4

Ci scusiamo per il necro. Ho incontrato troppo lo stesso problema e ho scoperto che si rJavaaspetta JAVA_HOMEdi indicare JRE. Se hai installato JDK, molto probabilmente i tuoi JAVA_HOMEpunti su JDK. La mia soluzione rapida:

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

3

Ho avuto dei problemi nel determinare il pacchetto Java che è stato installato quando ho riscontrato questo problema, poiché le risposte precedenti non funzionavano esattamente per me. Per risolverlo, ho digitato:

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

e quindi premere tab e le due directory suggerite erano "jre1.8.0_31 /" e "jre7 /"

Jre7 non ha risolto il mio problema, ma jre1.8.0_31 / l'ha fatto. La risposta finale era in esecuzione (prima della libreria (rJava)):

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

Sto usando Windows 8.1 a 64 bit Spero che questo aiuti qualcun altro.

Aggiornare:

Controlla la tua versione per determinare quale dovrebbe essere X (la mia è cambiata più volte da questo post):

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

3

Ho avuto un problema correlato con rJava. Si carica ma un pacchetto che dipende da esso non viene caricato.

Gli utenti possono perdere molto tempo con jvm.dll e PATH e JAVA_HOME quando la vera soluzione è costringere il programma di installazione a dimenticare i386. Utilizzare l'opzione per install.packages. (questo funziona anche quando si usa la libreria drat. (il merito va a Dason)

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

Inoltre, puoi modificare solo il tuo percorso utente con un comando win come questo:

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

0

Devo avere un JRE a 32 bit disponibile per il mio browser, ma JRE a 64 bit per R e rJava. Il JRE a 32 bit è installato nella posizione predefinita. Dopo alcuni esperimenti, ho scoperto che mi serviva solo uno di di misterbee suggerimenti per ottenere Rjava (versione 0,9-6 ) che lavorano per me. Tutto quello che ho fatto è stato aggiungere il percorso alla mia installazione java a 64 bit:

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

all'inizio della variabile di ambiente del mio percorso (il tuo percorso sarà probabilmente diverso) e rimuovi il mio JAVA_HOME come suggerito dall'utente2161065 . L'ho messo appena prima dell'entrata

C:\ProgramData\Oracle\Java\javapath

che il programma di installazione Oracle inserisce nella parte superiore del percorso e punta ad alcuni collegamenti simbolici al JRE a 32 bit. Aggiungendo la voce a jvm.dll a 64 bit, sembra che rJava possa trovare ciò di cui ha bisogno.


0

Penso che questo sia un aggiornamento. Non sono stato in grado di installare rJava (su Windows) fino a quando non ho installato JDK, poiché Javac non viene trovato e javac non funziona nel prompt dei comandi di Windows . Il messaggio che stavo ricevendo era

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

Il JDK include il JRE e secondo https://cran.r-project.org/web/packages/rJava/index.html la versione corrente (0.9-7 pubblicata 2015-lug-29) di rJava

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

Quindi eccoti qui: se rJava non si installa perché non riesce a trovare javac e hai JRE installato, prova JDK. Inoltre, assicurarsi che JAVA_HOMEpunti al JDK e non al JRE.


Noto che questo è sostanzialmente l'opposto di ciò che ha detto @friendzis.
Woodvi,

lo sviluppatore di rJava può chiarire questo problema, per favore
userJT

0

Ho risolto il problema disinstallando il software Java apparentemente ridondante dalla mia macchina Windows 7 x64. Ho raggiunto questo obiettivo disinstallando prima tutte le applicazioni Java e quindi installando una nuova versione di Java . (Più tardi ho indicato R 3.4.3 x86_64-w64-mingw32 sul percorso Java , solo per citare però non penso che questo fosse il vero problema.) Oggi è rimasto solo l'aggiornamento 8 di Java 8 (64-bit) 8.0.1610.12 poi. Dopo questo, install.packages("rJava"); library(rJava)ha funzionato perfettamente.


0

Questo è un seguito all'aggiornamento (luglio 2018). Sono su Windows 10 a 64 bit ma sono impostato per creare pacchetti r da sorgenti sia per 32 che per 64 bit con Rtools. Il mio jdk a 64 bit è jdk-11.0.2. Quando posso, faccio tutto in RStudio. A partire da marzo 2019, rjava è stato testato con <= jdk11, vedere il numero # 157 di github .

  • Installa jdks nella posizione predefinita per Aggiornamento (luglio 2018) di @Jeroen.
  • In R studio, imposta JAVA_HOME sul jdk a 64 bit

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

  • Opzionalmente controlla la tua variabile ambientale

Sys.getenv("JAVA_HOME")

  • Installa il pacchetto seguendo le raccomandazioni della pagina github

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

Cordiali saluti, alla console di scripting rstudio non piacciono le doppie virgole ... ma funziona!


0
  1. Scarica Java da https://java.com/en/download/windows-64bit.jsp per Windows a 64 bit \ Installalo
  2. Scarica il kit di sviluppo Java da https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html per Windows a 64 bit \ installalo
  3. Quindi fare clic destro sull'icona "Questo PC" nel desktop \ Proprietà \ Impostazioni di sistema avanzate \ Avanzate \ Variabili d'ambiente \ In Variabili di sistema selezionare Percorso \ Fare clic su Modifica \ Fare clic su Nuovo \ Copia e incolla percorsi "C: \ Programmi \ Java \ jdk1 .8.0_201 \ bin "e" C: \ Programmi \ Java \ jre1.8.0_201 \ bin "(senza virgolette) \ OK \ OK \ OK

Nota: jdk1.8.0_201 e jre1.8.0_201 verranno modificati in base alla versione di Java Development Kit e Java

  1. Nella finestra Variabili d'ambiente vai su Variabili utente per Utente \ Fai clic su Nuovo \ Inserisci nome variabile come "JAVA_HOME" e Valore variabile come "C: \ Programmi \ Java \ jdk1.8.0_201 \ bin" \ Premi OK

Per verificare l'installazione, apri CMD \ Digita javac \ Premi Invio e Digita java \ premi invio Verrà visualizzato inserisci qui la descrizione dell'immagine

In esecuzione RStudio

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

Nota: jdk1.8.0_201 verrà modificato in base alla versione del kit di sviluppo Java

Ora puoi installare e caricare il pacchetto rJava senza alcun problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.