2014-05-05 51 views
14

嗨,我遇到了與cran的rJava包問題。爲什麼rJava不能在使用OpenJDK 7的Ubuntu 14.04上運行?

我已經安裝了

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

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 

我再嘗試運行R和加載rJava並得到以下錯誤:

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’ 

我在Ubuntu 14.04 64位和正在使用R版本3.1.0(2014-04-10) - 「春天舞蹈」

更新:其實這不是特定於OpenJDK,我只是嘗試了甲骨文Java 8並得到了相同的結果。此外,我發現這個解決辦法here對此我不願意用,因爲它確實是一個解決辦法並沒有真正解釋爲什麼它是必要的。我認爲包系統應該已經處理了這個問題。好像libjvm.so是問題,我在這裏位於

/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 

出於某種原因,rJava無法找到他們,儘管使用sudo [R CMD javareconf更新。

更新2:情節變厚:如果我運行R作爲sudo它的作品。

感謝指點。

+0

答案可以在這裏找到 - http://stackoverflow.com/a/25932828/3939832 –

回答

7

我有同樣的問題具有類似構型(R 3.1.0的,Ubuntu 12.10,32位)。我找到了答案,在得到LD_LIBRARY_PATH正確設置,如下所述: error: unable to load installed packages just now除了有問題的子目錄是「客戶」而不是「服務器」。所以,現在我設置我的環境是這樣的:

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

這確實解決了我一直有的問題。剩下的唯一問題是爲什麼LD_LIBRARY_PATH不會自動設置?但無論如何,就像我說的,這爲我解決了這個問題。謝謝。 –

+0

在ubuntu服務器上爲我工作14.04'export 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

我能解決這個permanentelly使用這樣的回答:https://stackoverflow.com/a/25932828/3939832

這是有用的,如果你有甲骨文的Java 7或8安裝。在我的情況下,出口變數不是一個永久性的解決方案。你應該檢查什麼R的使用作爲環境做:

Sys.getenv("JAVA_HOME") 

,然後你可以通過創建一個java.conf文件on /etc/ld.so.conf.d/在上面的回答鏈接說明使用環境。

sudo R CMD javareconf

5

你可以,如果你使用的是Oracle的Java然後使用下面的命令一樣

sudo rstudio 

在超級用戶打開rstudio然後在'r運行

install.packages('rJava') 
+0

非常感謝這個工作對我來說 –

+0

更簡單的解決方案,它也適用於我。只有「類型...」不是終端命令,所以應格式不同。謝謝。 – Rodrigo

+0

如果你使用RStudio服務器,sudo rstudio命令不適用 –

5

解決這個問題

不會幫助使用:

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

我嘗試了很多東西,但沒有工作。然後我試圖使用

sudo rstudio 

然後

install.packages('rJava') 

其工作。 Coool

+0

這對我有用,但是我必須在安裝rJava之前在終端上執行Rudget CMD javareconf'。 – Gorka

相關問題