2013-05-08 60 views
53

安裝rJava我不能打電話rJavaR 3.0。我收到以下消息無法在R 3.0在Ubuntu 13.04

Error: package ‘rJava’ was built before R 3.0.0: please re-install it 

我試圖重新安裝rJava軟件包時出現錯誤。我提供了輸出R CMD javareconf

Java interpreter : /usr/bin/java 
Java version  : 1.7.0_21 
Java home path : /usr/lib/jvm/java-7-openjdk-i386/jre 
Java compiler : /usr/lib/jvm/java-7-openjdk-i386/jre/../bin/javac 
Java headers gen.: /usr/lib/jvm/java-7-openjdk-i386/jre/../bin/javah 
Java archive tool: /usr/lib/jvm/java-7-openjdk-i386/jre/../bin/jar 

trying to compile and link a JNI progam 
detected JNI cpp flags : 
detected JNI linker flags : 
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG  -fpic -O2 -pipe -g -c conftest.c -o conftest.o 
conftest.c:1:17: fatal error: jni.h: No such file or directory 
compilation terminated. 
make: *** [conftest.o] Error 1 
Unable to compile a JNI program 


Java library path: 
JNI cpp flags : 
JNI linker flags : 
Updating Java configuration in /usr/lib/R 
Done. 

我使用的是Ubuntu 13.04。我也試過apt-get install r-cran-rjava這不能幫助解決問題。關於jni.h有一些解決方案here.但是,不知道如何在這裏使用解決方案。

回答

75

我遇到了完全相同的問題。我的解決辦法是通過

sudo apt-get install openjdk-7-* 

安裝在OpenJDK-7- *其次,與

sudo R CMD javareconf 

和當時我能夠通過install.packages("rJava") R中安裝rJava。

雖然也許不是最優雅的解決方案,但它似乎解決了我的問題,讓rJava工作。

+2

謝謝。有效。我曾嘗試安裝java昨天。我也嘗試過Oracle Java,但沒有工作。不知道我是在安裝JRE還是重新啓動了。 – vinux 2013-05-09 04:00:25

+9

對我來說沒有運氣:前兩個步驟沒有錯誤,然後在'install.packages'上得到:'錯誤:無法加載共享對象'/home/cboettig/R/x86_64-pc-linux-gnu-library/3.0 /rJava/libs/rJava.so':''libjvm.so:無法打開共享對象文件:沒有這樣的文件或目錄。有任何想法嗎? – cboettig 2013-09-03 17:20:15

+7

我遇到了同樣的問題 - 沒有工作。最後發現,在安裝Java 1.7後,我不得不告訴Ubuntu使用它作爲默認值 - 請參閱[這裏](http://askubuntu.com/questions/64329/how-to-replace-openjdk-6-with-openjdk- 7) - 使用'update-java-alternatives -l'來獲取安裝的java版本列表,以及'sudo update-java-alternatives -s java-1.7.0-openjdk-i386'默認爲1.7。在這之後,'sudo R CMD javareconf'運行時沒有錯誤,並且我能夠'install.packages(「rJava」)' – JohnSG 2014-05-21 18:06:30

27

對於那些收到錯誤:

error: unable to load shared object '/some/dir/rJava/libs/rJava.so': libjvm.so: 
cannot open shared object file: No such file or directory 

我解決了這個錯誤在系統中查找庫和連接它們/usr/lib

$sudo updatedb 
$locate libjvm.so 
/usr/lib/debug/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server/libjvm.so 
/usr/lib/debug/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/zero/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-openjdk-amd64/jre/lib/amd64/zero/libjvm.so 
$sudo ln -s /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server/libjvm.so /usr/lib/