25

我安装了 iplots 和 rjava 包。当我执行此库(iplots)时,出现以下错误。我的电脑上确实安装了 JDK。

Loading required package: rJava
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: fun(libname, pkgname)
error: JAVA_HOME cannot be determined from the Registry

错误:无法加载包“rJava”

4

4 回答 4

33

该错误告诉您注册表中没有条目告诉 R Java 在您的机器上的位置。您的注册表已损坏,但更有可能您尚未安装 Java。您可以安装 Java Runtime Environment 或 Java Development Kit。

(您可以在此处下载 Java。)

如果您安装了 Java,请尝试重新安装它。这应该将条目放回您的注册表中。

如果这不起作用,您可以开始查看 R 正在寻找您的注册表条目的确切位置。rJava 用来查找 Java 的函数在 rJava:::.onLoad 函数中。在该函数中有一个名为 find.java 的子函数。我在这里复制内容:

    find.java <- function() {
        for (root in c("HLM", "HCU")) for (key in c("Software\\JavaSoft\\Java Runtime Environment", 
            "Software\\JavaSoft\\Java Development Kit")) {
            hive <- try(utils::readRegistry(key, root, 2), 
              silent = TRUE)
            if (!inherits(hive, "try-error")) 
              return(hive)
        }
        hive
    }

将其复制并粘贴到您的 R 窗口中,然后运行它find.java()。rJava 正在寻找 JavaHome 的条目。如果未列出,则您的注册表中缺少它。

您还可以通过在加载库之前设置它来手动设置 Java 位置的目录:

Sys.setenv(JAVA_HOME='C:\\Your\\Java\\Directory')
library(rJava)
于 2012-02-02T22:05:53.590 回答
3

如果像我一样,您没有安装 64 位 Java 的管理员权限,只需打开 32 位 R,它应该可以在您的 64 位 PC 上正常工作,因为问题的一部分似乎是 rJava 库函数调用嵌入式 Java 函数/例程,它可能只为 Excel/Windows 的 32 位界面而设计,并且当时的任务可能太大而无法更改所有内容。

于 2015-12-30T11:13:50.070 回答
1

链接中的答案解决了我的问题。

在解决之前,我尝试将 JAVA_HOME 添加到 Windows 环境中。它解决了这个错误,但产生了另一个问题。上述链接中的解决方案解决了此问题,而不会产生其他问题。

于 2016-03-07T12:12:55.413 回答
0

这里的任何 Linux 用户,运行命令:

sudo R CMD javareconf

这通常需要在更新系统 Java 安装后运行,如此处所建议

于 2019-08-26T16:04:55.490 回答