Menggunakan paket rJava pada Win7 64 bit dengan R

149

Saya mencoba menginstal rJavadi komputer dengan Win 7 64 bit. Ketika saya berlari

install.packages("rJava")

semuanya tampak baik-baik saja:

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

tetapi ketika saya mencoba memuat perpustakaan library(rJava)saya mendapatkan kesalahan berikut:

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'

Saya telah menginstal Java JRE (mencoba versi 32 dan 64 bit) dan JDK (menggunakan 32 dan 64 bit). Versi R saya R version 2.13.1 (2011-07-08)dan saya menggunakan RStudio.

Jika saya mencoba menggunakan 32 bit R, saya dapat memuat dengan rJavabaik. Apakah masalahnya hanya itu rJavatidak berjalan dalam R 64 bit? Bagaimana saya bisa tahu jika sebuah paket hanya untuk 32 dan bukan 64?


edit: baru saja diposkan 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)"
djq
sumber
Bisakah Anda menempelkan hasil R.Version()ke pertanyaan Anda? Saya baru saja menginstal versi 64bit rJavamenggunakan metode yang tepat Anda jelaskan dalam pertanyaan Anda. Dugaan saya adalah bahwa versi R Anda adalah 32 bit.
Andrie
tolong bagikan ans Anda bagaimana Anda menyelesaikannya.
bigData
1
Menambahkan komentar di sini karena dapat membantu seseorang tugas menelusuri seluruh daftar solusi. Jika Anda mendapatkan kesalahan di atas, periksa apakah Java Anda ada di Program Filesatau Program Files (x86). Tambahkan path ke windows seperti kata jawaban yang diterima. Jika Program Files (x86), itu berarti Anda memiliki versi 32-bit, ikuti tautan sites.google.com/site/rforfishandwildlifegrads/home/week_2/… .
Divi

Jawaban:

154

Pembaruan (Juli 2018):

Versi CRAN terbaru dari rJava akan menemukan jvm.dllsecara otomatis, tanpa secara manual mengatur PATHatau JAVA_HOME. Namun perhatikan bahwa:

  • Untuk menggunakan rJava dalam 32-bit R, Anda memerlukan Java untuk Windows x86
  • Untuk menggunakan rJava di 64-bit R, Anda memerlukan Java untuk Windows x64
  • Untuk membangun atau memeriksa paket R dengan multi-lengkungan (default) Anda perlu menginstal Java For Windows x64 dan Java untuk Windows x86 . Pada Win 64, yang pertama menginstal C:\Program files\Java\dan yang terakhir di C:\Program Files (x86)\Java\sehingga mereka tidak konflik.

Pada Java versi 9, dukungan untuk x86 (win32) telah dihentikan. Karenanya pengaturan multi-arch yang berfungsi adalah menginstal jdk-8u172-windows-i586.exe dan jdk-8u172-windows-x64.exe dan kemudian paket biner dari CRAN:

install.packages("rJava")

Paket biner dari CRAN harus mengambil sendiri jvm. Hanya ahli : untuk membangun rJava dari sumber, Anda memerlukan --merge-multiarchtanda:

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

Server lama:

(Catatan: banyak orang di jawaban / komentar lain mengatakan untuk menghapus JAVA_HOME, jadi pertimbangkan itu. Saya belum meninjau kembali masalah ini baru-baru ini untuk mengetahui apakah semua langkah di bawah masih diperlukan.)

Berikut adalah beberapa saran cepat tentang cara bangun dan berjalan dengan R + rJava pada Windows 7 64bit. Ada beberapa kemungkinan, tetapi sebagian besar memiliki kekurangan fatal. Inilah yang bekerja untuk saya:

Tambahkan jvm.dll ke PATH Anda

rJava, R <-> Java bridge, akan membutuhkan jvm.dll, tetapi R akan kesulitan menemukan DLL itu. Itu berada di folder seperti

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

atau

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

Di mana pun Anda berada, tambahkan direktori itu ke variabel PATH windows Anda. (Windows -> "Path" -> "Edit variabel lingkungan ke akun Anda" -> PATH -> edit nilainya.)

Anda mungkin sudah memiliki Java di PATH Anda. Jika demikian, Anda harus menemukan direktori klien / server di direktori "home" Java yang sama dengan yang sudah ada di PATH Anda.

Agar aman, pastikan arsitektur Anda cocok. Jika Anda memiliki Java Program Files, itu adalah 64-bit, jadi Anda harus menjalankan R64. Jika Anda memiliki Java Program Files (x86), itu 32-bit, jadi Anda menggunakan R. 32-bit polos

Luncurkan ulang R dari Menu Windows

Jika R sedang berjalan, berhenti.

Dari Start Menu, Start R / RGUI, RStudio. Ini sangat penting, untuk membuat R mengambil perubahan PATH Anda.

Instal rJava 0.9.2.

Versi sebelumnya tidak berfungsi! Cermin tidak mutakhir, jadi buka sumbernya di www.rforge.net: http://www.rforge.net/rJava/files/ . Perhatikan saran di sana

“Please use

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

to install.”

Itu hampir benar. Ini sebenarnya berfungsi:

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

Saksikan tanda baca! ".LibPaths () [1]" yang misterius, hanya memberitahu R untuk menginstal paket di direktori perpustakaan utama. Untuk beberapa alasan, membiarkan nilai kosong tidak berfungsi, meskipun seharusnya default.

pengganggu
sumber
4
Daripada membiarkan argumen kedua kosong, Anda bisa melakukannya install.packages('rJava', repos='http://www.rforge.net/').
Ken Williams
2
Seperti yang ditunjukkan dalam jawaban oleh @ user2161065, memuat rJava harus menghapus variabel JAVA_HOME
David LeBauer
1
Meskipun semua ini mungkin diperlukan, bahkan setelah melakukan ini saya harus mengeset JAVA_HOME seperti yang disarankan oleh @ user2161065
ajkl
3
+1 Menambahkan ...\jre\bin\serverke jalur memperbaikinya untuk saya
mchen
6
Di mana kita dapat menemukan variabel "Windows PATH" ini?
Shreyes
114

Membuat rJava bekerja sangat bergantung pada konfigurasi komputer Anda:

  1. Anda harus menggunakan versi 32bit atau 64bit yang sama untuk: R dan JDK / JRE. Campuran ini tidak akan pernah berhasil (setidaknya untuk saya).
  2. Jika Anda menggunakan versi 64bit pastikan, bahwa Anda tidak menetapkan JAVA_HOME sebagai variabel enviorment. Jika variabel ini disetel, rJava tidak akan berfungsi karena alasan apa pun (setidaknya untuk saya). Anda dapat memeriksa dengan mudah dalam R apakah JAVA_HOME diatur dengan

    Sys.getenv("JAVA_HOME")

Jika Anda perlu memiliki set JAVA_HOME (mis. Anda membutuhkannya untuk maven atau yang lainnya), Anda dapat menonaktifkannya dalam sesi-R Anda dengan kode berikut sebelum memuat rJava:

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

Ini harus melakukan trik dalam banyak kasus. Selanjutnya ini akan memperbaiki masalah Menggunakan paket rJava pada Win7 64 bit dengan R juga. Saya meminjam ide unetting variabel enviorment dari R: rJava menginstal paket gagal .

pengguna2161065
sumber
20
Solusi sebelumnya tidak berfungsi sampai saya menyingkirkan JAVA_HOME. Ini kuncinya.
bshor
15
Masalah JAVA_HOME ini harus dilaporkan ke rJava sebagai bug.
Antrian Apprentice
2
Ini benar-benar melakukan trik untuk saya: if (Sys.getenv ("JAVA_HOME")! = "") Sys.setenv (JAVA_HOME = "") perpustakaan (rJava) Terima kasih @ user2161065
ajkl
menambahkan skrip itu untuk menghapus JAVA_HOME var bekerja untuk saya!
Richard
1
Solusi ini juga berfungsi untuk paket-paket seperti XLConnect dan XLConnectJars yang bergantung pada rJava. (Saya menulis komentar yang jelas ini sehingga mesin pencari dapat mengambil pada halaman ini dengan lebih mudah daripada kesulitan yang saya temukan.)
Tripartio
31

Bagi saya, pengaturan JAVA_HOME melakukan trik (bukannya tidak menyetel , seperti pada jawaban lain yang diberikan di sini) Baik di Windows:

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

Atau di dalam R:

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

Tapi apa yang mungkin merupakan solusi terbaik (karena rJava 0.9-4) diganti dalam pengaturan Windows JAVA_HOME sama sekali:

options(java.home="C:\\Program Files\\Java\\jre7\\")
library(rJava)
ROLO
sumber
2
+1 pada meng-override variabel env JAVA_HOME dan pengaturan dalam R.
carnust
JAVA_HOME saya disetel ke folder JDK (seperti halnya saya mengembangkan Java juga), dan rJava tidak memilikinya. Saya menggunakan perbaikan (opsi) terakhir Anda karena saya tidak ingin mengacaukan dengan lingkungan dev Java yang berfungsi dengan baik. Terima kasih!
chaslewis
1
options(java.home="my\\path\\to\\jre")bekerja, ketika semuanya gagal, termasuk pengaturan lingkungan PATH
Daniel Krizian
Ini bekerja untuk saya: options(java.home="C:\\Program Files\\Java\\jdk1.8.0_144\\jre"). Jika Anda memiliki jdk1.8.
saubhik
Menggunakan Adopt Open JDK, saran terakhir itu berhasil untuk saya. Semua solusi populer lainnya gagal.
Ola Caster
7

Pertanyaan terakhir memiliki jawaban yang mudah:

> .Machine$sizeof.pointer
[1] 8

Artinya saya menjalankan R64. Jika saya menjalankan 32 bit R itu akan mengembalikan 4. Hanya karena Anda menjalankan OS 64 bit tidak berarti Anda akan menjalankan 64 bit R, dan dari pesan kesalahan itu muncul Anda tidak.

EDIT: Jika paket memiliki binari, maka mereka berada di direktori yang terpisah. Spesifikasinya akan tergantung pada OS. Perhatikan bahwa terjadi kesalahan LoadLibrary Anda ketika mencoba untuk menemukan dll dalam ...rJava/libs/x64/... Pada sistem MacOS saya ... rJava / libs / ... `folder memiliki 3 subdirektori: i386, ppc, dan x86_64. (File ppc jelas bagasi tidak berguna.)

IRTFM
sumber
Instalasi RStudio saya menunjuk ke 64bit R. Ketika saya mengubahnya ke 32bit, saya bisa mengimpor rJavapaket. Itu sebabnya saya sangat bingung tentang pesan kesalahan, karena tampaknya kebalikan dari apa yang terjadi.
djq
4

Maaf untuk necro. Saya juga mengalami masalah yang sama dan menemukan bahwa rJavamengharapkan JAVA_HOMEuntuk menunjuk ke JRE. Jika Anda telah menginstal JDK, kemungkinan JAVA_HOMEpoin Anda ke JDK. Solusi cepat saya:

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

Saya mengalami masalah menentukan paket Java yang diinstal ketika saya mengalami masalah ini, karena jawaban sebelumnya tidak benar-benar bekerja untuk saya. Untuk mengatasinya, saya mengetik:

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

dan kemudian tekan tab dan dua direktori yang disarankan adalah "jre1.8.0_31 /" dan "jre7 /"

Jre7 tidak menyelesaikan masalah saya, tetapi jre1.8.0_31 / berhasil. Jawaban akhir dijalankan (sebelum perpustakaan (rJava)):

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

Saya menggunakan Windows 8.1 64-bit Semoga ini bisa membantu orang lain.

Memperbarui:

Periksa versi Anda untuk menentukan X apa yang seharusnya (milik saya telah berubah beberapa kali sejak posting ini):

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

Saya memiliki masalah terkait dengan rJava. Itu akan memuat tetapi paket yang tergantung padanya, tidak mau memuat.

Pengguna dapat membuang banyak waktu dengan jvm.dll dan PATH dan JAVA_HOME ketika perbaikan sebenarnya adalah memaksa installer untuk melupakan i386. Gunakan opsi untuk install.packages. (Ini juga berfungsi ketika pustaka drat digunakan. (kredit diberikan ke Dason)

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

Anda juga dapat memodifikasi hanya jalur pengguna Anda dengan perintah win seperti ini:

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

Saya harus memiliki JRE 32 bit yang tersedia untuk browser saya, tetapi JRE 64 bit untuk R dan rJava. JRE 32 bit diinstal di lokasi default. Setelah beberapa eksperimen, saya menemukan bahwa saya hanya diperlukan satu dari misterbee ini saran untuk mendapatkan rJava (versi 0,9-6 ) bekerja untuk saya. Yang saya lakukan adalah menambahkan path ke instalasi java 64 bit saya:

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

ke atas variabel lingkungan jalur saya (jalur Anda kemungkinan akan berbeda) dan hapus JAVA_HOME saya seperti yang disarankan user2161065 . Saya menempatkan ini tepat di depan entri

C:\ProgramData\Oracle\Java\javapath

yang dimasukkan oleh pemasang Oracle di atas jalan dan menunjuk ke beberapa symlink ke JRE 32 bit. Dengan menambahkan entri ke 64 bit jvm.dll, sepertinya rJava dapat menemukan apa yang dibutuhkannya.

Michael Szczepaniak
sumber
0

Saya pikir ini adalah pembaruan. Saya tidak dapat menginstal rJava (di Windows) sampai saya menginstal JDK, karena Javac tidak ditemukan dan javac tidak berfungsi di command prompt windows . Pesan yang saya terima adalah

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

JDK termasuk JRE, dan menurut https://cran.r-project.org/web/packages/rJava/index.html versi saat ini (0,9-7 diterbitkan 2015-Jul-29) dari rJava

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

Jadi itulah Anda: jika rJava tidak akan menginstal karena tidak dapat menemukan javac, dan Anda telah menginstal JRE, maka coba JDK. Juga, pastikan itu JAVA_HOMEmenunjuk ke JDK dan bukan JRE.

woodvi
sumber
Saya perhatikan bahwa ini pada dasarnya berlawanan dengan apa yang dikatakan @friendzis.
woodvi
dapat pengembang rJava membawa beberapa kejelasan untuk masalah ini, pls
userJT
0

Saya memecahkan masalah dengan menghapus instalan perangkat lunak Java yang tampaknya berlebihan dari mesin windows 7 x64 saya. Saya mencapai ini dengan terlebih dahulu menghapus semua aplikasi Java dan kemudian menginstal versi Java yang baru . (Kemudian saya menunjuk R 3.4.3 x86_64-w64-mingw32 ke jalur Java , hanya untuk menyebutkan meskipun saya tidak berpikir ini adalah masalah sebenarnya.) Hari ini hanya Java 8 Pembaruan 161 (64-bit) 8.0.1610.12 yang tersisa kemudian. Setelah ini, install.packages("rJava"); library(rJava)berhasil dengan sempurna.

jay.sf
sumber
0

Ini merupakan tindak lanjut dari Pembaruan (Juli 2018). Saya menggunakan 64 bit Windows 10 tetapi saya siap untuk membangun paket r dari source untuk 32 dan 64 bit dengan Rtools. 64 bit jdk saya adalah jdk-11.0.2. Ketika saya bisa, saya melakukan segalanya di RStudio. Pada Maret 2019, rjava diuji dengan <= jdk11, lihat masalah github # 157 .

  • Instal jdks ke lokasi default mereka per Pembaruan (Juli 2018) oleh @Jeroen.
  • Di R studio, atur JAVA_HOME ke jdk 64 bit

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

  • Secara opsional periksa variabel lingkungan Anda

Sys.getenv("JAVA_HOME")

  • Instal paket sesuai rekomendasi halaman github

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

FYI, konsol scripting rstudio tidak suka koma ganda ... tapi berhasil!

Aaron Dickey
sumber
0
  1. Unduh Java dari https://java.com/en/download/windows-64bit.jsp untuk windows 64-bit \ Instal
  2. Unduh Java development kit dari https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html untuk windows 64-bit \ instal
  3. Kemudian klik kanan pada ikon "This PC" di desktop \ Properties \ Advanced system settings \ Advanced \ Environment Variables \ Di bawah Variabel System pilih Path \ Klik Edit \ Klik pada New \ Copy dan paste paths "C: \ Program Files \ Java \ jdk1 .8.0_201 \ bin ”dan“ C: \ Program Files \ Java \ jre1.8.0_201 \ bin ”(tanpa kutipan) \ OK \ OK \ OK

Catatan: jdk1.8.0_201 dan jre1.8.0_201 akan diubah tergantung pada versi Java development kit dan Java

  1. Dalam jendela Variabel Lingkungan, buka Variabel pengguna untuk Pengguna \ Klik New \ Masukkan nama Variabel sebagai "JAVA_HOME" dan nilai Variabel sebagai "C: \ Program Files \ Java \ jdk1.8.0_201 \ bin" \ Tekan OK

Untuk memeriksa instalasi, buka CMD \ Jenis javac \ Tekan Enter dan Ketik java \ tekan enter Ini akan ditampilkan masukkan deskripsi gambar di sini

Di RStudio dijalankan

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

catatan: jdk1.8.0_201 akan diubah tergantung pada versi Java development kit

Sekarang Anda dapat menginstal dan memuat paket rJava tanpa masalah.

Bappa Das
sumber