加载rJava时出错

时间:2012-11-15 17:49:40

标签: java r centos cloudera rjava

当我想加载rJava时出错。 JDK已安装。 (我在CentOS VM上运行R(cloudera demo vm cdh3u4))

> library(rJava)

Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/home/cloudera/R/x86_64-redhat-linux-gnu-library/2.15/rJava/libs/rJava.so':
  libjvm.so: cannot open shared object file: No such file or directory
Error: package/namespace load failed for ‘rJava’

LD_LIBRARY_PATH设置有问题吗?如果是,我该如何解决? 我需要运行rJava来安装rhdfs。

更多信息(如果需要):

[cloudera@localhost ~]$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

2 个答案:

答案 0 :(得分:14)

对于Ubuntu,安装了oracle-java(7/8)。它将位于此位置/ usr / lib / jvm,并且需要sudo访问。

使用以下条目创建文件/etc/ld.so.conf.d/java.conf

/usr/lib/jvm/java-8-oracle/jre/lib/amd64
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server

(用java-7-oracle或java-7-openjdk-amd64替换java-8-oracle,具体取决于你的java版本)

然后:

sudo ldconfig

重新启动RStudio,然后安装rJava包。

答案 1 :(得分:11)

让rJava工作在很大程度上取决于您的计算机配置。以下内容至少在 windows 平台上有效。您可以尝试检查,如果这对您的平台也有帮助。

  1. 您必须对两者使用相同的 32位或64位版本:R JDK / JRE。这种混合物永远不会起作用(至少对我而言)。
  2. 如果使用64位版本,请确保未将JAVA_HOME 设置为环境变量。如果设置了此变量,rJava将无论出于何种原因都不起作用。你可以检查你的JAVA_HOME是否在R中设置:

    Sys.getenv("JAVA_HOME")
    
  3. 如果您需要设置JAVA_HOME(例如,您需要maven或其他东西),您可以在加载rJava之前使用以下代码在R会话中停用它:

    if (Sys.getenv("JAVA_HOME")!="")
      Sys.setenv(JAVA_HOME="")
    library(rJava)
    

    在大多数情况下,这应该可以解决问题。此外,这也将解决问题Using the rJava package on Win7 64 bit with R。我借用了从R: rJava package install failing取消设置环境变量的想法。