Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么rJava不能在使用OpenJDK 7的Ubuntu14.04上工作?_Java_R_Openjdk_Rjava_Ubuntu 14.04 - Fatal编程技术网

为什么rJava不能在使用OpenJDK 7的Ubuntu14.04上工作?

为什么rJava不能在使用OpenJDK 7的Ubuntu14.04上工作?,java,r,openjdk,rjava,ubuntu-14.04,Java,R,Openjdk,Rjava,Ubuntu 14.04,嗨,我对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 #

嗨,我对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)-“春舞”

更新:实际上这不是OpenJDK特有的,我只是尝试了oracle java 8,得到了相同的结果。我还发现了这个我不愿意使用的变通方法,因为它确实是一个变通方法,并没有真正解释为什么它是必要的。在我看来,包装系统应该处理好这一点。看起来像是libjvm。问题就在这里

/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,它就会工作


感谢指针。

对于类似的配置(R3.1.0、Ubuntu 12.10、32位),我也遇到了同样的问题。我发现答案在于正确设置LD_LIBRARY_路径,如下所述: 除了所讨论的子目录是“客户机”而不是“服务器”。因此,现在我将我的环境设置为:

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

我能够用这个答案永久地解决这个问题:

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

Sys.getenv("JAVA_HOME")

然后,您可以通过在/etc/ld.so.conf.d/上创建一个
java.conf
文件来使用该环境。

您可以通过像超级用户一样打开rstudio来解决这个问题

sudo rstudio
然后在里边跑

install.packages('rJava')

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

sudo R CMD javareconf

不会帮助使用:

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

我尝试了很多事情,但都没有成功。然后我试着用

sudo rstudio
然后

install.packages('rJava')

它起作用了。Coool

在Ubuntu上安装rJava软件包并不像大多数其他R软件包那样简单。一些关于如何做的快速说明(来源:)


这确实解决了我一直面临的问题。剩下的唯一问题是为什么LD_LIBRARY_PATH没有自动设置?但不管怎样,就像我说的,这解决了我的问题。谢谢。在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
更简单的解决方案,它也为我工作。只有“type…”不是终端命令,因此应采用不同的格式。谢谢。如果你使用RStudio服务器,命令sudo RStudio doesn不适用,也可以在这里找到-这对我来说很有效,但在安装rJava之前,我必须在终端中执行“sudo R CMD javareconf”。
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!).