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

时间:2014-05-05 09:27:34

标签: java r openjdk rjava ubuntu-14.04

您好我从头开始遇到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并得到了相同的结果。此外,我发现这个解决方法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

由于某种原因,尽管使用sudo R CMD javareconf进行更新,rJava仍未找到它们。

更新2:情节变粗:如果我将R作为sudo运行它。

感谢指针。

6 个答案:

答案 0 :(得分:9)

你可以通过在超级用户中打开rstudio来解决这个问题,比如

sudo rstudio

然后在R run里面

install.packages('rJava')

答案 1 :(得分: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

答案 2 :(得分:7)

我能够使用这个答案来解决这个问题:https://stackoverflow.com/a/25932828/3939832

如果您安装了Oracle java 7或8,这将非常有用。在我的案例中导出变量不是一个永久的解决方案。您应该通过执行以下操作来检查R正在使用的环境:

Sys.getenv("JAVA_HOME")

然后您可以通过创建java.conf文件on /etc/ld.so.conf.d/来使用该环境,如上面的回答链接中所述。

答案 3 :(得分:5)

如果您使用的是oracle java,请使用以下命令:

sudo R CMD javareconf

将无法使用:

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

答案 4 :(得分:1)

我尝试了很多东西,但没有奏效。然后我尝试使用

sudo rstudio

然后

install.packages('rJava')

它的工作。 COOOL

答案 5 :(得分:1)

在Ubuntu上安装rJava软件包并不像大多数其他R软件包那么简单。有关如何操作的一些简短说明(来源:https://www.r-bloggers.com/installing-rjava-on-ubuntu/)。

Install the Java Runtime Environment (JRE).

sudo apt-get install -y default-jre

Install the Java Development Kit (JDK).

sudo apt-get install -y default-jdk

Update where R expects to find various Java files.

sudo R CMD javareconf

Install the package.

> install.packages("rJava")

If you have a RStudio session open, then exit and restart it. This is important (a running RStudio session will not pick up these changes!).