2014-05-05 21 views
14

Xin chào, tôi đang gặp sự cố với gói rJava từ cran.Tại sao rJava không hoạt động trên Ubuntu 14.04 bằng OpenJDK 7?

Tôi đã cài đặt

sudo apt-get install openjdk-7-jdk 
sudo apt-get install r-cran-rjava 

và chạy

sudo R CMD javareconf 
# Java interpreter : /usr/bin/java 
# Java version  : 1.7.0_55 
# Java home path : /usr/lib/jvm/java-7-openjdk-amd64/jre 
# Java compiler : /usr/bin/javac 
# Java headers gen.: /usr/bin/javah 
# Java archive tool: /usr/bin/jar 

sau đó tôi cố gắng chạy R và tải rJava và nhận được lỗi sau:

R 
> library(rJava) 
Error : .onLoad failed in loadNamespace() for 'rJava', details: 
    call: dyn.load(file, DLLpath = DLLpath, ...) 
    error: unable to load shared object '/usr/lib/R/site-library/rJava/libs/rJava.so': 
    libjvm.so: cannot open shared object file: No such file or directory 
Error: package or namespace load failed for ‘rJava’ 

Tôi đang trên Ubuntu 14.04 64 bit và sáng sử dụng phiên bản R 3.1.0 (2014-04-10) - "Spring Dance"

CẬP NHẬT: Trên thực tế điều này không phải là cụ thể cho OpenJDK, tôi chỉ thử oracle java 8 và có kết quả tương tự. Ngoài ra tôi tìm thấy workaround này here mà tôi miễn cưỡng sử dụng vì nó thực sự là một workaround và không thực sự giải thích lý do tại sao nó cần thiết. Hệ thống gói nên xử lý điều này theo ý kiến ​​của tôi. Có vẻ như libjvm.so là vấn đề và tôi có nó nằm ở đây

/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/jamvm/libjvm.so 
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server/libjvm.so 
/usr/lib/jvm/java-7-oracle/jre/lib/amd64/server/libjvm.so 

và vì một lý do rJava thất bại trong việc tìm thấy chúng mặc dù cập nhật với sudo R CMD javareconf.

CẬP NHẬT 2: Cốt truyện dày lên: Nếu tôi chạy R làm sudo nó hoạt động.

Cảm ơn các con trỏ.

+0

Trả lời có thể được tìm thấy ở đây - http://stackoverflow.com/a/25932828/3939832 –

Trả lời

7

tôi đã cùng một vấn đề với cấu hình tương tự (R 3.1.0, Ubuntu 12.10, 32-bit). Tôi tìm thấy câu trả lời là trong việc LD_LIBRARY_PATH thiết lập đúng, như mô tả ở đây: error: unable to load installed packages just now ngoại trừ các thư mục con trong câu hỏi là 'khách hàng' không 'máy chủ'. Vì vậy, bây giờ tôi đang thiết lập môi trường của tôi như thế này:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386 
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/i386:$JAVA_HOME/jre/lib/i386/client 
+0

Điều đó thực sự giải quyết được các vấn đề tôi đã gặp phải. Câu hỏi duy nhất còn lại là tại sao LD_LIBRARY_PATH không được đặt tự động? Nhưng dù sao, như tôi đã nói điều này đã khắc phục vấn đề cho tôi. Cảm ơn. –

+0

Làm việc cho tôi trên máy chủ ubuntu 14.04 'xuất LD_LIBRARY_PATH =/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64 /:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server' –

6

tôi đã có thể giải quyết việc này permanentelly sử dụng câu trả lời này: https://stackoverflow.com/a/25932828/3939832

này rất hữu ích nếu bạn có Oracle java 7 hoặc 8 được cài đặt. Xuất các biến trong trường hợp của tôi không phải là một giải pháp lâu dài. Bạn nên kiểm tra những gì R được sử dụng như môi trường bằng cách thực hiện:

Sys.getenv("JAVA_HOME") 

và sau đó bạn có thể sử dụng môi trường bằng cách tạo ra một tập tin java.confon /etc/ld.so.conf.d/ như đã nêu trong liên kết câu trả lời ở trên.

5

bạn có thể giải quyết vấn đề này bằng cách mở rstudio trong siêu người dùng như

sudo rstudio 

sau đó bên trong R chạy

install.packages('rJava') 
+0

cảm ơn rất nhiều điều này đã làm việc cho tôi –

+0

Giải pháp đơn giản hơn nhiều, nó cũng làm việc cho tôi. Chỉ có "loại ..." không phải là một lệnh thiết bị đầu cuối, vì vậy nên được định dạng khác nhau. Cảm ơn bạn. – Rodrigo

+0

Nếu bạn sử dụng RStudio Server lệnh sudo rstudio không áp dụng –

5

nếu bạn đang sử dụng oracle java sau đó sử dụng lệnh sau:

sudo R CMD javareconf

sẽ không giúp sử dụng:

sudo R CMD javareconf **JAVA_HOME**=(path where java home is located) 
0

Tôi đã thử nhiều thứ nhưng không hoạt động.Sau đó, tôi cố gắng sử dụng

sudo rstudio 

và sau đó

install.packages('rJava') 

làm việc của nó. Coool

+0

Điều này làm việc cho tôi, nhưng tôi phải làm ´sudo R CMD javareconf 'trong một thiết bị đầu cuối trước khi cài đặt rJava. – Gorka

Các vấn đề liên quan