Sử dụng gói rJava trên Win7 64 bit với R


149

Tôi đang cố gắng cài đặt rJavatrên máy tính có Win 7 64 bit. Khi tôi chạy

install.packages("rJava")

Tất cả trông đều ổn:

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

nhưng khi tôi cố tải thư viện thì library(rJava)tôi gặp lỗi sau:

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'

Tôi đã cài đặt Java JRE (thử cả hai phiên bản 32 và 64 bit) và JDK (sử dụng cả 32 và 64 bit). Phiên bản R của tôi là R version 2.13.1 (2011-07-08)và tôi đang sử dụng RStudio.

Nếu tôi thử sử dụng 32 bit R, tôi có thể tải rJavatốt. Có phải vấn đề chỉ là rJavakhông chạy trong R 64 bit? Làm thế nào tôi có thể biết nếu một gói chỉ dành cho 32 thay vì 64?


chỉnh sửa: vừa đăng 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)"

Bạn có thể vui lòng dán kết quả của R.Version()câu hỏi của bạn? Tôi vừa cài đặt phiên bản 64 bit rJavabằng cách sử dụng phương pháp chính xác mà bạn mô tả trong câu hỏi của bạn. Tôi đoán là phiên bản R của bạn là 32 bit.
Andrie

hãy chia sẻ ans của bạn như thế nào bạn giải quyết nó.
bigData

1
Thêm một bình luận ở đây vì nó có thể giúp ai đó có nhiệm vụ đi qua toàn bộ danh sách giải pháp. Nếu bạn gặp lỗi ở trên, hãy kiểm tra xem Java của bạn đang ở trong Program Fileshay Program Files (x86). Thêm đường dẫn đến các cửa sổ như câu trả lời được chấp nhận nói. Nếu Program Files (x86), điều đó có nghĩa là bạn có phiên bản 32 bit, hãy theo liên kết các trang web.google.com/site/rforfishandwildlifegrads/home/week_2/ .
Divi

Câu trả lời:


154

Cập nhật (tháng 7 năm 2018):

Phiên bản CRAN mới nhất của rJava sẽ jvm.dlltự động tìm , mà không cần cài đặt thủ công PATHhoặc JAVA_HOME. Tuy nhiên lưu ý rằng:

  • Để sử dụng rJava trong R 32 bit, bạn cần Java cho Windows x86
  • Để sử dụng rJava trong 64 bit R, bạn cần Java cho Windows x64
  • Để xây dựng hoặc kiểm tra các gói R với đa vòm (mặc định), bạn cần cài đặt cả Java cho Windows x64 cũng như Java cho Windows x86 . Trên Win 64, cái trước cài đặt vào C:\Program files\Java\và cái sau C:\Program Files (x86)\Java\để chúng không xung đột.

Kể từ phiên bản Java 9, việc hỗ trợ cho x86 (win32) đã bị ngừng. Do đó, thiết lập đa vòm hoạt động mới nhất là cài đặt cả jdk-8u172-windows-i586.exejdk-8u172-windows-x64.exe và sau đó là gói nhị phân từ CRAN:

install.packages("rJava")

Gói nhị phân từ CRAN sẽ tự nhận trên jvm. Chỉ chuyên gia : để xây dựng rJava từ nguồn, bạn cần --merge-multiarchcờ:

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

Anwser cũ:

(Lưu ý: nhiều người trong các câu trả lời / nhận xét khác đã nói xóa JAVA_HOME, vì vậy hãy xem xét điều đó. Tôi đã không xem xét lại vấn đề này gần đây để biết liệu tất cả các bước dưới đây có còn cần thiết không.)

Dưới đây là một số lời khuyên nhanh về cách thức dậy và chạy với R + rJava trên Windows 7 64bit. Có một số khả năng, nhưng hầu hết đều có sai sót chết người. Đây là những gì làm việc cho tôi:

Thêm jvm.dll vào PATH của bạn

rJava, cầu nối R <-> Java, sẽ cần jvm.dll, nhưng R sẽ gặp khó khăn khi tìm DLL đó. Nó nằm trong một thư mục như

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

hoặc là

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

Bất cứ nơi nào của bạn, hãy thêm thư mục đó vào biến PATH của windows. (Windows -> "Đường dẫn" -> "Chỉnh sửa biến môi trường cho tài khoản của bạn" -> PATH -> chỉnh sửa giá trị.)

Bạn có thể đã có Java trên PATH của bạn. Nếu vậy, bạn nên tìm thư mục máy khách / máy chủ trong cùng một thư mục "nhà" Java giống như thư mục đã có trên PATH của bạn.

Để an toàn, hãy đảm bảo các kiến ​​trúc của bạn khớp. Nếu bạn có Java Program Files, nó là 64 bit, vì vậy bạn nên chạy R64. Nếu bạn có Java Program Files (x86), đó là 32 bit, vì vậy bạn sử dụng 32 bit R.

Khởi chạy lại R từ Menu Windows

Nếu R đang chạy, thoát.

Từ Menu Bắt đầu, Bắt đầu R / RGUI, RStudio. Điều này rất quan trọng, để làm cho R nhận các thay đổi PATH của bạn.

Cài đặt rJava 0.9.2.

Các phiên bản trước không hoạt động! Gương không cập nhật, vì vậy hãy truy cập vào nguồn tại www.rforge.net: http://www.rforge.net/rJava/files/ . Lưu ý lời khuyên ở đó

“Please use

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

to install.”

Điều đó gần như đúng. Điều này thực sự hoạt động:

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

Xem dấu câu! Bí ẩn .libPaths () [1] bí ẩn, chỉ nói với R để cài đặt gói trong thư mục thư viện chính. Vì một số lý do, để trống giá trị không hoạt động, mặc dù nó sẽ mặc định.


4
Thay vì để trống đối số thứ hai, bạn có thể làm install.packages('rJava', repos='http://www.rforge.net/').
Ken Williams

2
Như được chỉ ra trong câu trả lời của @ user2161065, tải rJava yêu cầu xóa biến JAVA_HOME
David LeBauer

1
Mặc dù tất cả điều này có thể cần thiết, ngay cả sau khi làm điều này, tôi đã phải hủy đặt JAVA_HOME theo đề xuất của @ user2161065
ajkl

3
+1 Thêm ...\jre\bin\servervào đường dẫn đã sửa nó cho tôi
mchen

6
Chúng ta có thể tìm thấy biến "Windows PATH" này ở đâu?
Shreyes 30/03/2015

114

Để rJava hoạt động phụ thuộc nhiều vào cấu hình máy tính của bạn:

  1. Bạn phải sử dụng cùng một phiên bản 32 bit hoặc 64 bit cho cả hai: R và JDK / JRE. Một hỗn hợp này sẽ không bao giờ hoạt động (ít nhất là đối với tôi).
  2. Nếu bạn sử dụng phiên bản 64 bit , hãy đảm bảo rằng bạn không đặt JAVA_HOME làm biến số. Nếu biến này được đặt, rJava sẽ không hoạt động vì bất kỳ lý do gì (ít nhất là đối với tôi). Bạn có thể kiểm tra dễ dàng trong R là JAVA_HOME được đặt với

    Sys.getenv("JAVA_HOME")

Nếu bạn cần phải thiết lập JAVA_HOME (ví dụ: bạn cần nó cho maven hoặc thứ gì khác), bạn có thể tắt nó trong phiên R của mình bằng mã sau đây trước khi tải rJava:

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

Điều này nên làm thủ thuật trong hầu hết các trường hợp. Hơn nữa, điều này cũng sẽ khắc phục sự cố Sử dụng gói rJava trên Win7 64 bit với R. Tôi đã mượn ý tưởng bỏ đặt biến enviorment từ cài đặt gói R: rJava không thành công .


20
Các giải pháp trước đó không hoạt động cho đến khi tôi thoát khỏi JAVA_HOME. Đây là chìa khóa.
bshor

15
Vấn đề JAVA_HOME này phải được báo cáo cho rJava như là một lỗi.
tập xếp hàng

2
Điều này thực sự đã lừa tôi: if (Sys.getenv ("JAVA_HOME")! = "") Sys.setenv (JAVA_HOME = "") thư viện (rJava) Cảm ơn @ user2161065
ajkl

thêm tập lệnh đó để xóa var JAVA_HOME làm việc cho tôi!
Richard

1
Giải pháp này cũng hoạt động đối với các gói như XLConnect và XLConnectJars phụ thuộc vào rJava. (Tôi đang viết nhận xét rõ ràng này để các công cụ tìm kiếm có thể truy cập trang này dễ dàng hơn so với sự cố tôi đã tìm thấy.)
Tripartio

31

Đối với tôi, việc đặt JAVA_HOME đã thực hiện thủ thuật (thay vì bỏ đặt, như trong một câu trả lời khác được đưa ra ở đây). Hoặc trong Windows:

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

Hoặc bên trong R:

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

Nhưng những gì có lẽ là giải pháp tốt nhất (kể từ rJava 0.9-4) đang ghi đè trong R cài đặt Windows JAVA_HOME:

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

2
+1 khi ghi đè biến JAVA_HOME env và cài đặt trong R.
Carnust

JAVA_HOME của tôi đã được đặt thành thư mục JDK (tôi cũng phát triển Java) và rJava không có nó. Tôi đã sử dụng bản sửa lỗi (tùy chọn) cuối cùng của bạn vì tôi không muốn gây rối với môi trường phát triển Java hoạt động tốt. Cảm ơn!
chaslewis

1
options(java.home="my\\path\\to\\jre")đã hoạt động, khi mọi thứ khác đều thất bại, bao gồm cả môi trường thiết lập PATH
Daniel Krizian

Điều này làm việc cho tôi : options(java.home="C:\\Program Files\\Java\\jdk1.8.0_144\\jre"). Nếu bạn có jdk1.8.
saubhik

Sử dụng Adopt Open JDK, đề xuất cuối cùng đó đã có hiệu quả với tôi. Tất cả các giải pháp phổ biến khác đều thất bại.
Ola Caster

7

Câu hỏi cuối cùng có một câu trả lời dễ dàng:

> .Machine$sizeof.pointer
[1] 8

Có nghĩa là tôi đang chạy R64. Nếu tôi đang chạy 32 bit R thì nó sẽ trả về 4. Chỉ vì bạn đang chạy HĐH 64 bit không có nghĩa là bạn sẽ chạy 64 bit R, và từ thông báo lỗi thì có vẻ như bạn không biết.

EDIT: Nếu gói có nhị phân, thì chúng nằm trong các thư mục riêng. Các chi tiết cụ thể sẽ phụ thuộc vào hệ điều hành. Lưu ý rằng lỗi ...rJava/libs/x64/... LoadL Library của bạn đã xảy ra khi cố gắng tìm dll trong hệ thống MacOS của tôi, thư mục ... rJava / libs / ... `có 3 thư mục con: i386, ppc và x86_64. (Các tệp ppc rõ ràng là hành lý vô dụng.)


Cài đặt RStudio của tôi chỉ vào 64 bit R. Khi tôi thay đổi thành 32 bit, tôi có thể nhập rJavagói. Đó là lý do tại sao tôi rất bối rối về thông báo lỗi, vì nó dường như trái ngược hoàn toàn với những gì đang diễn ra.
djq

4

Xin lỗi vì đã bị hoại tử. Tôi cũng đã gặp phải vấn đề tương tự và phát hiện ra rằng họ rJavasẽ JAVA_HOMEchỉ ra JRE. Nếu bạn đã cài đặt JDK, rất có thể các JAVA_HOMEđiểm của bạn đến JDK. Giải pháp nhanh chóng của tôi:

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

3

Tôi gặp một số khó khăn khi xác định gói Java đã được cài đặt khi tôi gặp phải vấn đề này, vì các câu trả lời trước đó không hoạt động chính xác với tôi. Để sắp xếp nó, tôi gõ:

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

và sau đó nhấn tab và hai thư mục được đề xuất là "jre1.8.0_31 /" và "jre7 /"

Jre7 đã không giải quyết vấn đề của tôi, nhưng jre1.8.0_31 / đã làm. Câu trả lời cuối cùng đã chạy (trước thư viện (rJava)):

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

Tôi đang sử dụng Windows 8.1 64 bit Hy vọng điều này sẽ giúp người khác.

Cập nhật:

Kiểm tra phiên bản của bạn để xác định X nên là gì (của tôi đã thay đổi nhiều lần kể từ bài đăng này):

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

3

Tôi đã có một vấn đề liên quan với rJava. Nó sẽ tải nhưng một gói phụ thuộc vào nó, sẽ không tải.

Người dùng có thể lãng phí rất nhiều thời gian với jvm.dll và PATH và JAVA_HOME khi cách khắc phục thực sự là buộc trình cài đặt chỉ cần quên i386. Sử dụng tùy chọn cho install.packages. (điều này cũng hoạt động khi thư viện drat được sử dụng. (tín dụng chuyển đến Dason)

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

Ngoài ra, bạn có thể sửa đổi chỉ đường dẫn người dùng của mình bằng lệnh win như thế này:

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

0

Tôi cần phải có sẵn JRE 32 bit cho trình duyệt của mình, nhưng JRE 64 bit cho R và rJava. JRE 32 bit được cài đặt ở vị trí mặc định. Sau một số thử nghiệm, tôi thấy rằng tôi chỉ cần một trong những gợi ý của misterbee để khiến rJava (phiên bản 0.9-6 ) hoạt động cho tôi. Tất cả những gì tôi đã làm là thêm đường dẫn vào bản cài đặt java 64 bit của mình:

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

đến đầu biến môi trường đường dẫn của tôi (đường dẫn của bạn có thể sẽ khác) và xóa JAVA_HOME của tôi như user2161065 đã đề xuất. Tôi đặt cái này ngay trước mục

C:\ProgramData\Oracle\Java\javapath

mà trình cài đặt Oracle chèn ở đầu đường dẫn và trỏ đến một số liên kết tượng trưng đến JRE 32 bit. Bằng cách thêm mục vào jvm.dll 64 bit, có vẻ như rJava có thể tìm thấy những gì nó cần.


0

Tôi nghĩ rằng đây là một bản cập nhật. Tôi không thể cài đặt rJava (trên Windows) cho đến khi tôi cài đặt JDK, vì không tìm thấy Javacjavac không hoạt động trong dấu nhắc lệnh của windows . Tin nhắn tôi nhận được là

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

JDK bao gồm JRE và theo https://cran.r-project.org/web/packages/rJava/index.html phiên bản hiện tại (0.9-7 xuất bản 2015-Jul-29) của rJava

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

Vì vậy, có bạn: nếu rJava sẽ không cài đặt vì nó không thể tìm thấy javac và bạn đã cài đặt JRE, thì hãy thử JDK. Ngoài ra, hãy chắc chắn rằng nó JAVA_HOMEtrỏ đến JDK chứ không phải JRE.


Tôi nhận thấy rằng điều này về cơ bản trái ngược với những gì @friendzis nói.
woodvi

Nhà phát triển rJava có thể mang lại một số sự rõ ràng cho vấn đề này không, xin vui lòng
userJT

0

Tôi đã giải quyết vấn đề bằng cách gỡ cài đặt phần mềm Java có vẻ dư thừa từ máy windows 7 x64 của tôi. Tôi đã đạt được điều này bằng cách trước tiên gỡ cài đặt tất cả các ứng dụng Java và sau đó cài đặt phiên bản Java mới . (Sau này tôi đã chỉ R 3.4.3 x86_64-w64-mingw32 cho đường dẫn Java , chỉ đề cập đến mặc dù tôi không nghĩ đây là vấn đề thực sự.) Hôm nay chỉ còn lại Bản cập nhật Java 8 (64-bit) 8.0.1610.12 sau đó. Sau này, install.packages("rJava"); library(rJava)đã làm việc hoàn hảo.


0

Đây là phần tiếp theo để cập nhật (tháng 7 năm 2018). Tôi đang dùng Windows 10 64 bit nhưng đang được thiết lập để xây dựng các gói r từ nguồn cho cả 32 và 64 bit với Rtools. Jdk 64 bit của tôi là jdk-11.0.2. Khi tôi có thể, tôi làm mọi thứ trong RStudio. Kể từ tháng 3 năm 2019, rjava được thử nghiệm với <= jdk11, xem vấn đề github # 157 .

  • Cài đặt jdks vào vị trí mặc định của họ trên mỗi Cập nhật (tháng 7 năm 2018) bởi @Jeroen.
  • Trong studio R, đặt JAVA_HOME thành jdk 64 bit

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

  • Tùy chọn kiểm tra biến môi trường của bạn

Sys.getenv("JAVA_HOME")

  • Cài đặt gói theo đề xuất trang github

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

FYI, bảng điều khiển kịch bản rstudio không giống như dấu phẩy kép ... nhưng nó hoạt động!


0
  1. Tải xuống Java từ https://java.com/en/doad/windows-64bit.jsp cho các cửa sổ 64 bit \ Cài đặt nó
  2. Tải xuống bộ công cụ phát triển Java từ https://www.oracle.com/technetwork/java/javase/doads/jdk8-doads-2133151.html cho các cửa sổ 64 bit \ cài đặt nó
  3. Sau đó nhấp chuột phải vào biểu tượng PC PC Biểu tượng này trong máy tính để bàn \ Thuộc tính \ Cài đặt hệ thống nâng cao \ Biến \ Môi trường Biến \ Trong Biến hệ thống chọn Đường dẫn \ Nhấp vào Chỉnh sửa \ Nhấp vào Mới \ Sao chép và dán đường dẫn C: \ Tệp chương trình \ Java \ jdk1 .8.0_201 \ bin và và C: \ Tệp chương trình \ Java \ jre1.8.0_201 \ bin nặng (không có trích dẫn) \ OK \ OK \ OK

Lưu ý: jdk1.8.0_201 và jre1.8.0_201 sẽ được thay đổi tùy thuộc vào phiên bản của bộ công cụ phát triển Java và Java

  1. Trong cửa sổ Biến môi trường, hãy chuyển đến Biến người dùng cho Người dùng \ Nhấp vào Mới \ Đặt tên biến là Trần JAVA_HOME Giá trị và biến có giá trị là C: \ Chương trình tệp \ Java \ jdk1.8.0_201 \ bin Muff \ Nhấn OK

Để kiểm tra cài đặt, hãy mở CMD \ Type javac \ Nhấn Enter và gõ java \ nhấn enter Nó sẽ hiển thị nhập mô tả hình ảnh ở đây

Trong RStudio chạy

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

Lưu ý: jdk1.8.0_201 sẽ được thay đổi tùy thuộc vào phiên bản của bộ công cụ phát triển Java

Bây giờ bạn có thể cài đặt và tải gói rJava mà không gặp vấn đề gì.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.