为什么 rJava 不能在使用 OpenJDK 7 的 Ubuntu 14.04 上运行?

2022-09-03 04:51:26

嗨,我在cran的rJava包上遇到了问题。

我已安装

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) - “Spring Dance”

更新:实际上这不是OpenJDK所特有的,我刚刚尝试了oracle java 8并得到了相同的结果。另外,我在这里找到了这个解决方法,我不愿意使用它,因为它确实是一种解决方法,并没有真正解释为什么它是必要的。在我看来,包系统应该已经处理好了这个问题。似乎 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:情节变厚:如果我以sudo的身份运行R,它就会起作用。

感谢指点。


答案 1

您可以通过在超级用户中打开rstudio来解决此问题,例如

sudo rstudio

然后在R内部运行

install.packages('rJava')

答案 2

我在类似的配置(R 3.1.0,Ubuntu 12.10,32位)中遇到了同样的问题。我发现答案是正确设置LD_LIBRARY_PATH,如下所述:错误:无法加载刚刚安装的软件包,除了有问题的子目录是“客户端”而不是“服务器”。所以现在我把我的环境设置为这样:

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

推荐