6

我在 centOS VM (cloudera cdh3u4) 上安装 rJava 时遇到问题。

我先这样做了:sudo R CMD javareconf

[cloudera@localhost ~]$ sudo R CMD javareconf
Java interpreter : /usr/bin/java
Java version     : 1.6.0_31
Java home path   : /usr/java/jdk1.6.0_31/jre
Java compiler    : /usr/bin/javac
Java headers gen.:
Java archive tool: /usr/bin/jar
Java library path: $(JAVA_HOME)/lib/amd64/server:$(JAVA_HOME)/lib/amd64:$(JAVA_HOME)/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -L$(JAVA_HOME)/lib/amd64 -L$(JAVA_HOME)/../lib/amd64 -L/usr/java/packages/lib/amd64 -L/usr/lib64 -L/lib64 -L/lib -L/usr/lib -ljvm
JNI cpp flags    : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/linux

Updating Java configuration in /usr/lib64/R
Done.

但是当我想安装 rJava 时,我得到了这个:

> install.packages( c('rJava'),
+ repos='http://cran.revolutionanalytics.com')

    ...
    configure: error: One or more Java configuration variables are not set.
    Make sure R is configured with full Java support (including JDK). Run
    R CMD javareconf
    as root to add Java support to R.

    If you don't have root privileges, run
    R CMD javareconf -e
    to set all Java-related variables and then install rJava.

    ERROR: configuration failed for package ‘rJava’
    * removing ‘/home/cloudera/R/x86_64-redhat-linux-gnu-library/2.15/rJava’

    The downloaded source packages are in
            ‘/tmp/RtmpR5V6t5/downloaded_packages’
    Warning message:
    In install.packages(c("rJava"), repos = "http://cran.revolutionanalytics.com") :
      installation of package ‘rJava’ had non-zero exit status

我不确定,但这是否意味着我需要安装 JDK?如果是,您是否知道一个好的站点,我可以在其中找到为我的案例安装正确 JDK 的分步信息?(我的最终目的是安装 rhdfs 和 rjava 是需要的依赖项)

4

3 回答 3

4

试试这个它为我解决了配置问题 http://www.ibm.com/support/knowledgecenter/SSPT3X_3.0.0/com.ibm.swg.im.infosphere.biginsights.install.doc/doc/install_install_r.html

我努力安装 rJava 并且几乎没有学习。让我解释。当您在 R 中发出 install package 命令时

install.packages("rJava")

查找在 R 环境中设置的以下变量。

检查 R 中的 Java 支持...存在:解释器:'/usr/java/jre/bin/java' 归档器:'/usr/java/jdk1.8.0_111/jre/../bin/jar ' 编译器: '/usr/java/jdk1.8.0_111/jre/../bin/javac' 头文件准备: '/usr/java/jdk1.8.0_111/jre/../bin/javah' cpp 标志: '-I/usr/lib/jvm/java/include -I/usr/lib/jvm/java/include/linux' java 库:'-L/usr/java/jdk1.8.0_111/jre/lib/amd64/服务器 -ljvm -ldl'

我的java安装在/usr/java/jdk1.8.0_111。验证变量指定的每个路径是否正确。接下来寻找你的LD_LIBRARY_PATH。我认为它在这条路径中寻找“libjvm.so”。对我来说是

export LD_LIBRARY_PATH=/usr/lib/jvm/jdk1.8.0_111/jre/lib/amd64/server:/usr/lib/jvm/jdk1.8.0_111/jre/lib/amd64/

设置你的 JAVA_HOME 环境变量

首先发出命令

R CMD javareconf -e

它将设置以下变量 JAVA_HOME JAVA JAVAC JAVAH JAR JAVA_LIBS JAVA_CPPFLAGS JAVA_LD_LIBRARY_PATH 修改 JAVA_LIBS 目录

export JAVA_LIBS="$JAVA_LIBS -ldl"

再次发出不带 -e 的 javareconf 命令

R CMD javareconf

现在进入 R shell 并发出 rJava install 命令,它应该找到所有的环境变量并且它应该可以工作。

于 2017-02-01T15:34:50.997 回答
3

是的,您确实需要 JDK。

对于它的价值,我的 Debian / Ubuntu 包openjdk-6-jdk在构建我们的r-cran-rjava包时安装。

看起来这个java-1.6.0-openjdk.x86_64包应该适合你,你也可以试试java-1.7.0-openjdk.x86_64.

于 2012-11-14T19:11:55.857 回答
-2

早期版本会出现间歇性问题。镜像不是最新的,因此请访问 www.rforge.net 的源代码:http ://www.rforge.net/rJava/files/ 。请用

install.packages('rJava',,'http://www.rforge.net/')

安装。” 这几乎是正确的。这实际上有效:

install.packages('rJava', .libPaths()[1], 'http://www.rforge.net/')

“.libPaths()[1]”只是告诉 R 将包安装在主库目录中。出于某种原因,将值留空不起作用,即使它应该作为默认值工作。

于 2012-12-30T03:45:37.350 回答