尝试在R中加载包时由于rJava而出现问题

时间:2013-06-29 05:15:30

标签: r rjava r-xlsx

当我键入require(xlsx)以便在R中加载包xlsx时,会显示以下消息:

> require(xlsx)
Loading required package: xlsx
Loading required package: xlsxjars
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
Failed with error:  ‘package ‘rJava’ could not be loaded’

我还尝试手动加载rJava包但收到此错误消息:

require(rJava)
Loading required package: rJava
Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: fun(libname, pkgname)
  error: No CurrentVersion entry in Software/JavaSoft registry! Try re-installing Java and make sure R and Java have matching architectures.

您对如何解决问题有任何建议吗?

10 个答案:

答案 0 :(得分:101)

原因可能与您使用 64位 OS和R版本但未安装具有相同体系结构的Java有关。 您需要做的是从此页面下载Java 64位:https://www.java.com/en/download/manual.jsp

之后只是尝试重新加载xlsx包。你不应该重新启动R.

答案 1 :(得分:8)

我有一个类似的问题,对我有用的是设置JAVA_HOME。我先把它累在R:

app.directive('iframeOnload', function() {
    return {
        restrict: 'A',
        scope: {
            iframeOnload: '&'
        },
        link: function($scope, $element, $attrs) {
            $element.on('load', function(e) {
                if($scope.iframeOnload) {

                    $scope.$apply(function () {                     
                        $scope.iframeOnload();
                    });
                }
            });
        }
    }
});

当它实际工作时,我在系统属性中设置它 - >高级 - >环境变量通过添加新的System变量。然后我重新启动了R / RStudio,一切正常。

答案 2 :(得分:6)

因为您的计算机中缺少任何一个Java版本(32位/ 64位)。尝试安装两个Jdks并运行代码 安装Jdks后打开R并输入代码

system("java -version")

这将为您提供安装的Jdk版本。然后尝试加载rJava包。这对我有用。

答案 3 :(得分:3)

如果您在RStudio中出现此错误,请使用上面的Lauren环境代码,并在工具,全局选项中将您的R版本更改为32位版本。如果您有更新的版本,应该有32位和64位R选项。这将需要重新启动R,并限制您的内存选项。虽然不需要安装64位版本的jre。

答案 4 :(得分:2)

我有类似的问题。这是由于依赖包&rjava'造成的。通过重新指示R使用不同的JAVA_HOME来克服此问题。

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

这对我有用。

答案 5 :(得分:1)

link中的回答解决了我的问题。

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

答案 6 :(得分:0)

您可以使用的替代软件包是 readxl 。这个软件包不需要外部依赖。

答案 7 :(得分:0)

如果你对macOS有这个问题,这里没有简单的方法:(特别是,当你想使用R3.4。我已经去过那里了;)

R 3.4, rJava, macOS and even more mess ;)

R3.3不容易(R3.3是使用不同的编译器编译的)。

R, Java, rJava and macOS adventures

答案 8 :(得分:0)

我想我找到了解决该问题的方法,因为我遇到了同样的问题!

我的修补程序是同时安装32位和64位JRE(Java运行时环境)版本8更新181。(我要求另一个应用程序使用32位,但是您的修补程序很可能只是自己重新安装64位。 )

答案 9 :(得分:0)

读取/写入excel文件,可以使用:

  • readxl 包用于读取和 writexl 包用于写入
  • openxlsx 读写包

使用 xlsxXLConnect(使用 rjava),如果您有大文件,您将面临内存错误