2012-11-15 75 views
5

我想加載rJava時出現錯誤。 JDK已安裝。 (我在CentOS的VM上運行R(Cloudera的演示VM cdh3u4))加載rJava時出錯

> library(rJava) 

Error : .onLoad failed in loadNamespace() for 'rJava', details: 
    call: dyn.load(file, DLLpath = DLLpath, ...) 
    error: unable to load shared object '/home/cloudera/R/x86_64-redhat-linux-gnu-library/2.15/rJava/libs/rJava.so': 
    libjvm.so: cannot open shared object file: No such file or directory 
Error: package/namespace load failed for ‘rJava’ 

是不是有什麼毛病LD_LIBRARY_PATH設置?如果是的話,我該如何解決這個問題? 我需要rJava運行它來稍後安裝rhdfs。

一些更多的信息(如果需要):

[[email protected] ~]$ java -version 
java version "1.6.0_31" 
Java(TM) SE Runtime Environment (build 1.6.0_31-b04) 
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode) 

回答

10

獲取rJava工作在很大程度上取決於你的電腦配置。以下是至少在平臺上工作的一個windows平臺。你可以嘗試一下,如果這能幫助你在你的平臺上。

  1. 你必須使用相同的 32位或64位版本的兩式: JDK/JRE。這種混合將永遠不會工作(至少對我而言)。
  2. 如果您使用64位版本請確保您的未設置JAVA_HOME作爲環境變量。如果設置了這個變量,rJava不會因爲任何原因而工作。您可以檢查您的JAVA_HOME設置在'r用:

    Sys.getenv("JAVA_HOME") 
    

如果需要JAVA_HOME設置(例如,你需要它的行家或別的東西),你可以在你的R-會話中停用加載rJava之前用下面的代碼:

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

這應該在大多數情況下做到這一點。此外,這也將修復問題Using the rJava package on Win7 64 bit with R。我借用了從R: rJava package install failing中解除環境變量的想法。

13

對於Ubuntu,安裝了oracle-java(7/8)。它將位於/ usr/lib/jvm這個位置,並且需要sudo訪問權限。

創建文件/etc/ld.so.conf.d/java.conf帶有以下各項:

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

(取決於你的Java版本取代Java-8-甲骨文的Java 7甲骨文或Java-7的OpenJDK-AMD64)

然後:

sudo ldconfig 

重啓RStudio然後安裝rJava包。

+1

它解決了我在安裝'rJava','RWeka','FSelector'等時出現的不同錯誤的所有問題。成千上萬的「謝謝」! –

+1

這是rJava找不到JVM的真正解決方案。我在win7上遇到了類似的問題。這是服務器目錄在兩個平臺上都有問題。 –

+0

你可以在我的答案這裏找到一些更詳細的解釋 - http://stackoverflow.com/a/25932828/3409405 –