2013-05-08 61 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/