R: rJava gói cài đặt không thành công


116

Khi cài đặt rJava bằng install.packages("rJava")lệnh, tôi gặp lỗi sau:

checking Java support in R... present:
interpreter : '/usr/bin/java'
archiver    : '/usr/bin/jar'
compiler    : '/usr/bin/javac'
header prep.: '/usr/bin/javah'
cpp flags   : '-I/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../include -I/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../include/linux'
java libs   : '-L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/amd64/server -L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/amd64 -L/usr/lib/jvm/java-6-sun-1.6.0.20/jre/../lib/amd64 -L -L/usr/java/packages/lib/amd64 -L/usr/lib64 -L/lib64 -L/lib -L/usr/lib -ljvm'
checking whether JNI programs can be compiled... yes
checking JNI data types... configure: error: One or more JNI types differ from the corresponding native type. You may need to use non-standard compiler flags or a different compiler in order to fix this.
ERROR: configuration failed for package ‘rJava’

Tôi đã cài đặt Java JDK và java -versiontrả về như sau:

$ java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)

Khi Google tìm kiếm lỗi, tôi thấy rằng những người khác đang gặp vấn đề tương tự nhưng không tìm thấy giải pháp nào khác ngoài "cài đặt toàn bộ JDK, không chỉ JRE" mà tôi đã thực hiện.

Điều khác mà tôi đọc được là sudo R CMD javareconfchạy khá vui vẻ mà không có lỗi.

Bất kỳ ý tưởng vấn đề của tôi là gì?

[[EDIT]] Đã vài tháng kể từ khi tôi gặp sự cố này. Ban đầu tôi đã giải quyết vấn đề này bằng cách chỉnh sửa các đường dẫn Java của mình, như được minh họa trong câu trả lời mà tôi đã đăng bên dưới. Gần đây tôi đã gặp phải vấn đề tương tự trên bản cài đặt Ubuntu mới. Tôi đã thử khuyến nghị của Dirk sử dụng apt-get để cài đặt gói rJava. Nó hoạt động hoàn hảo. Điều tôi không đánh giá cao ban đầu là việc cài đặt các gói bằng phương thức apt-get của Ubuntu về cơ bản khác với việc chỉ tải cùng một gói bằng install.packages () bên trong R. Các gói Ubuntu giải quyết một số vấn đề mà tôi không nhận ra hoặc đánh giá cao. .


câu trả lời cũng có thể được tìm thấy ở đây - stackoverflow.com/questions/12872699/…
Tejus Prasad

1
Chỉ đưa ra nhận xét ở đây cho bản thân trong tương lai của tôi (khi tôi chắc chắn thấy mình quay lại câu hỏi này) rằng tôi cần chạy sudo R CMD javareconf để cài đặt apt-get được nhận dạng rstudio-server của tôi.
Jim Crozier

2
Chín năm sau và đây là một vấn đề không bao giờ kết thúc. Tôi gặp phải vấn đề này mỗi khi tôi thực hiện cài đặt mới R. Có gì đó thay đổi .. Hệ điều hành, phiên bản Rstudio, phiên bản R, phiên bản java, jdk, jre, jvm .... Và đó luôn là một giải pháp mới để giải quyết nó. Thật nực cười khi tôi không thể đọc một tệp excel mà không có tất cả những thứ vớ vẩn này.
rmf

@rmf hiện có một số gói đọc excel không yêu cầu Java. Đối với các bài đọc đơn giản, tôi thích readxlnhưng để viết lại vào Excel thì tôi thích hơn openxlsx. Không yêu cầu rJava.
JD Dài

Câu trả lời:


114

Sẽ không

apt-get install r-cran-rjava

đã được dễ dàng hơn? Bạn có thể đã hỏi tôi tại useR! :)


3
Điểm của Ubuntu và Debian là bạn không cần phải google ngay từ đầu --- nó sẽ "hoạt động" bằng cách sử dụng các gói thích hợp. Làm cho cuộc sống của bạn dễ dàng hơn và sử dụng các gói nếu bạn có thể. Tôi cho rằng bạn cũng đã sử dụng các gói Java của Ubuntu?
Dirk Eddelbuettel

16
Dirk, bạn hỏi những câu hỏi này như thể tôi không biết tôi đã làm cái quái gì vậy. Nếu tôi nhớ lại, tôi đã gặp sự cố khi cài đặt Java bằng apt-get nên tôi đã xây dựng từ nguồn và đó có thể là nguồn gốc (tất cả các cách chơi chữ nhằm mục đích) của các vấn đề của tôi. Tất nhiên nó có thể chỉ là nghiệp xấu.
JD Dài

2
Tôi đang sử dụng R 2.15.3 ubuntu 12.04.2 64bit. khi tôi update.packages()nhận được, tôi nhận thấy rằng có một rJava update. Cài đặt từ bên trong R không thành công. Khi tôi apt-get install r-cran-rjavakhông có bản cập nhật nào. Tại sao chuyện này đang xảy ra?
ECII

1
@DirkEddelbuettel, Trong Red Hat của tôi, 'sudo yum install r-cran-rjava' không hoạt động. Đã nói Các plugin đã tải: rhnplugin Hệ thống này đang nhận các bản cập nhật từ RHN Classic hoặc RHN Satellite. Thiết lập Quy trình Cài đặt Không có gói r-cran-rjava.
BigDataScientist

1
@DirkEddelbuettel, trong khi cách tiếp cận 'nó chỉ nên hoạt động' nghe có vẻ tuyệt vời đối với tôi, thực tế là chỉ có rất nhiều gói được liệt kê trong r-cran-x là lý do tại sao mọi người sử dụng cách R 'thông thường' (install.packages). Hơn nữa, tôi chỉ mất tư vấn cho bạn về làm việc đó thông qua cran, mà thực sự không giúp đỡ như R 3.x là chủ đạo hiện nay, trong khi các gói trong r-cran- là rõ ràng trước khi R 3.x
Richard

77

Hóa ra vấn đề của tôi là vấn đề với JAVA_HOMEbiến môi trường của tôi . Vâng, tôi biết rất sốc. Cài đặt ban đầu của tôi cho PATHJAVA_HOMEtrông như thế này:

export JAVA_HOME=/usr/lib/jvm/java-6-sun
export PATH=$PATH:$JAVA_HOME/bin

Và tôi đã thêm /jrenên bây giờ nó trông như thế này:

export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre
export PATH=$PATH:$JAVA_HOME/bin

Mọi thứ trong Java dường như hoạt động tốt nếu không có /jrerJava thì không. Kỳ quặc.


5
Giữ đúng ý nghĩa của "tràn ngăn xếp" bằng cách tạo một câu hỏi -> trả lời vòng lặp vô hạn --- Tôi thích nó.
DrewConway

10
Cảm ơn. Cố gắng của tôi để đảm bảo người dùng Google trong tương lai có thể tìm thấy câu trả lời cho các câu hỏi R của họ!
JD Dài

11
Sau khi sửa đổi JAVA_HOME và đường dẫn đến tệp thực thi java, tôi thấy mình cần phải chạy R CMD javareconf. Nếu không, quá trình cài đặt rJava vẫn thấy các địa điểm cũ của tiêu đề, và các thư viện vv
Carlos Macasaet

1
Không có gì làm việc cho tôi. Tôi đang cố gắng cài đặt "rJava" trong máy chủ Red Hat Linux nơi tôi đang phục vụ một số ứng dụng R Shiny. Tôi nhận được LỖI sau: cấu hình không thành công cho gói 'rJava' * loại bỏ '/ usr / lib64 / R / library / rJava'. Tôi đã thực hiện các bước sau trong quá trình loại bỏ lỗi. 1. Cập nhật Java trong Linux sudo yum cài đặt java-1.7.0-openjdk 2. Đặt HOME và PATH xuất JAVA_HOME = / usr / lib / jvm / java-1.7.0-ibm-1.7.0.6.1.x86_64 / jre export PATH = $ PATH: $ JAVA_HOME / bin 3. cấu hình lại Java sudo / usr / bin / R CMD javareconf
BigDataScientist

Có, nó hoạt động, tôi đã sử dụng 8-oraclephiên bản thay thế.
gunzapper

21

Cảm ơn - đề xuất của bạn về việc $JAVA_HOMEdẫn tôi đến một giải pháp tương tự:

prompt$ unset JAVA_HOME

trước khi gọi R.


1
bỏ đặt JAVA_HOME (không có ký hiệu đô la)
Vladtn

1
Có, điều này đã khắc phục sự cố của tôi. Bạn có thể vui lòng giải thích tại sao? Cảm ơn
MichaelZ

hủy đặt JAVA_HOME và đặt CLASSPATH = $ CLASSPATH: / usr / lib64 / R / share / java
42n4


14

Đó là cách tôi làm cho nó hoạt động:

Trong Linux (Ubuntu 16.04)

sudo apt-get install default-jre
sudo apt-get install default-jdk
sudo R CMD javareconf

trong R:

install.packages("rJava")

1
cảm ơn ... Tôi cần cài đặt một cái gì đó có tên là rcdk trong R đã bị rơi xuống 'cos java không hoạt động. Công việc của bạn xung quanh đã giải quyết được sự cố (Ubuntu 18.04)
user1945827

Thực sự vui mừng được giúp đỡ!
Jim Chen

11

Điều này làm việc cho tôi trên Ubuntu 12.04 và R phiên bản 3.0

cd /usr/lib/jvm/java-6-sun-1.6.0.26/include

đây là thư mục có jni.h

Tiếp theo, tạo một liên kết mềm đến một tệp tiêu đề bắt buộc khác (Tôi quá lười biếng để tìm hiểu cách đưa nhiều thư mục vào tùy chọn JAVA_CPPFLAGS bên dưới):

sudo ln -s linux/jni_md.h .

Cuối cùng

sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/include

1
sudo R CMD javareconf JAVA_CPPFLAGS=-I/usr/lib/jvm/java-6-sun-1.6.0.26/includeđã giải quyết vấn đề cho tôi.
Moustafa Alzantot

… Và tôi sẽ thêm echo $JAVA_HOMEtrong trường hợp java-6-sunkhông phải là thư mục chính xác của bạn.
isomorphismes

7

dưới đây là một trong những câu trả lời của tôi về một bài đăng khác - lỗi: không thể tải các gói đã cài đặt ngay bây giờ
(điều này cũng liên quan đến câu hỏi này)

Đối với người dùng Linux (Ubuntu): Nếu bạn đã cài đặt oracle-java (7/8) . Nó sẽ ở vị trí này /usr/lib/jvmsudocần có quyền truy cập.

Tạo tệp /etc/ld.so.conf.d/java.confvới các mục sau:

/usr/lib/jvm/java-8-oracle/jre/lib/amd64
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server

(Thay thế java-8-oracle bằng java-7-oracle tùy thuộc vào phiên bản java của bạn)

Sau đó:

sudo ldconfig

Khởi động lại RStudio và sau đó cài đặt gói rJava.


1
Tôi đã thử nhiều giải pháp với các mức độ thành công khác nhau, nhưng đây là giải pháp đầu tiên tôi gặp có vẻ có khả năng phục hồi (tức là không yêu cầu lặp lại 5 bước giống nhau mỗi khi tôi khởi chạy R).
SamWN

4

Chạy R dưới Gentoo trên AMD64. Tôi đã nâng cấp lên R 2.12.0

R phiên bản 2.12.0 (2010-10-15) Bản quyền (C) 2010 R Foundation for Statistical Computing ISBN 3-900051-07-0 Nền tảng: x86_64-pc-linux-gnu (64-bit) và những thông báo phiền phức đó đã biến mất xa.

Jan Vandermeer


2

Tôi đã cố gắng cài đặt openjdk-7- * nhưng vẫn gặp sự cố khi cài đặt rJava. Hóa ra sau khi tôi khởi động lại máy tính của mình, sau đó không có vấn đề gì cả.

vì thế

sudo apt-get install openjdk-7-*


RESTART after installing java, then try to install package "rJava" in R

2

Gói rJava tìm kiếm /usr/lib/jvm/default-java/thư mục. Nhưng nó không có sẵn như mặc định. Thư mục này có một liên kết biểu tượng cho java mặc định được cấu hình cho hệ thống.

Để kích hoạt java mặc định, hãy cài đặt các gói sau:

sudo apt-get install default-jre default-jre-headless

Đã thử nghiệm trên ubuntu 17.04 với CRAN R 3.4.1


2

Điều phù hợp với tôi là thay đổi JAVA_HOME từ tệp /usr/lib/R/etc/javaconf

Đầu tiên tôi đã kiểm tra những gì là phiên bản của tôi về Java kích hoạt: sudo update-alternatives --config java. Trong trường hợp của tôi, nó làjava-8-oracle

Tôi đã mở tệp /usr/lib/R/etc/javaconfvà thay thế default-javabằng java-8-oracle:

${JAVA_HOME=/usr/lib/jvm/default-java}

được thay thế bởi :

${JAVA_HOME=/usr/lib/jvm/java-8-oracle}

Và sau đó sudo R CMD javareconf

Tôi đã khởi động lại RStudio và sau đó có thể cài đặt rJava.


1

những gì tôi làm là ở đây:

  1. trong /etc/apt/sources.list, thêm:

    deb http://ftp.de.debian.org/debian sid chính

Lưu ý: rjava phải là phiên bản mới nhất

2 lần chạy: sudo apt-get update sudo apt-get install r-cran-rjava

Sau khi cập nhật phiên bản cũ của rjava, sau đó có thể cài đặt rhdfs_1.0.8.



1

Tôi đã gặp phải sự cố tương tự khi sử dụng Windows 10. Tôi đã giải quyết sự cố bằng quy trình sau

  1. Tải xuống Java từ https://java.com/en/download/windows-64bit.jsp cho windows 64 bit \ Cài đặt nó
  2. Tải xuống bộ phát triển Java từ https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html cho windows 64 bit \ Cài đặt nó
  3. Sau đó nhấp chuột phải vào biểu tượng “Máy tính này” trong màn hình nền \ Thuộc tính \ Cài đặt hệ thống nâng cao \ Nâng cao \ Biến môi trường \ 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: \ Program Files \ Java \ jdk1 .8.0_201 \ bin ”và“ C: \ Program Files \ Java \ jre1.8.0_201 \ bin ”(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ộ phát triển Java và Java

  1. Trong cửa sổ Biến môi trường, 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à “JAVA_HOME” và Giá trị biến là “C: \ Program Files \ Java \ jdk1.8.0_201 \ bin” \ Nhấn OK

Để kiểm tra cài đặt, hãy mở CMD \ Loại javac \ Nhấn Enter và Nhập 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ộ 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ì.


0

Vấn đề là rJava sẽ không cài đặt trong RStudio( Version 1.0.136). Điều sau đây đã làm việc cho tôi ( macOS Sierra version 10.12.6) (tìm thấy ở đây ):

Bước 1: Tải xuống và cài đặt javaforosx.dmgtừ đây

Bước 2: Tiếp theo, chạy lệnh từ bên trong RStudio:

install.packages("rJava", type = 'source')

-2

Tôi đã gặp sự cố tương tự trên Ubuntu 16.04 và có thể giải quyết nó bằng cách tạo một thư mục có tên "default-java" /usr/lib/jvmvà sao chép vào đó tất cả nội dung của /usr/lib/jvm/java-8-oracle. Tôi đã chọn giải pháp này vì việc sửa biến môi trường JAVA_HOME hóa ra không có ích.


1
Điều này sẽ phá vỡ default-jrecài đặt gói.
Gustavo Garcia
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.