加载rJava时出现错误。

7

当我想加载rJava时,出现了错误。JDK已安装。(我在CentOS虚拟机上运行R (cloudera演示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个回答

15

对于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版本将java-8-oracle替换为java-7-oracle或java-7-openjdk-amd64)

然后:

sudo ldconfig

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


1
它解决了我在安装“rJava”、“RWeka”、“FSelector”等过程中出现的各种错误问题。成千上万个“感谢”! - Marta Karas
1
这是rJava找不到JVM的真正解决方案。我在win7上遇到了类似的问题。在两个平台上都存在问题的是服务器目录。 - Michael Szczepaniak
你可以在这里找到更详细的解释 - https://dev59.com/N2cs5IYBdhLWcg3waTRD#25932828 - Tejus Prasad

12

让rJava正常工作取决于您计算机的配置。以下内容至少适用于windows平台。您可以尝试检查一下,看看是否对您的平台有帮助。

  1. 您必须同时使用32位或64位版本:R和JDK/JRE。它们混用将永远无法工作(至少对我来说是这样)。
  2. 如果您使用64位版本,请确保不要将JAVA_HOME设置为环境变量。如果设置了此变量,rJava将无法工作,原因不明。您可以在R中检查是否设置了JAVA_HOME:

    Sys.getenv("JAVA_HOME")
    

如果您需要设置JAVA_HOME(例如,您需要它用于Maven或其他某些工具),您可以在加载rJava之前使用以下代码在R会话中取消激活它:

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

在大多数情况下,这应该能解决问题。此外,这也将修复在Win7 64位上使用rJava包和R的问题。我从R:rJava包安装失败中借鉴了取消环境变量的想法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接