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

问题描述 投票:0回答:10

当我输入

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.

您对如何解决这个问题有什么建议吗?

r rjava r-xlsx
10个回答
149
投票

原因可能与您使用64位操作系统和R版本但没有安装具有相同架构的Java有关。 您所要做的就是从此页面下载 Java 64 位:https://www.java.com/en/download/manual.jsp

之后尝试重新加载

xlsx
包。您不需要重新启动 R,或者如果它不起作用,请重新启动一次。


10
投票

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

system("java -version")

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


10
投票

我遇到了类似的问题,对我有用的是设置 JAVA_HOME。我首先在 R 中感到厌倦:

Sys.setenv(JAVA_HOME = "C:/Program Files/Java/jdk1.8.0_101/")

当它真正起作用时,我将其设置了

系统属性 -> 高级 -> 环境变量

通过添加新的系统变量。然后我重新启动 R/RStudio,一切正常。


8
投票

我也有类似的问题。这是由于依赖包“rJava”引起的。这个问题可以通过重新定向 R 使用不同的

JAVA_HOME
来解决。

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

这对我有用。


4
投票

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


4
投票

您可以使用的替代包是

readxl
。这个包不需要外部依赖。


1
投票

要读取/写入 Excel 文件,您可以使用:

  • readxl
    阅读包和
    writexl
    写作包
  • openxlsx
    读写包

使用

xlsx
XLConnect
(使用 rjava),如果你有大文件,你将面临内存错误


1
投票

对我来说,我只需要确保 Java 是 64 位(以匹配 R)。

这是我如何下载并安装 64 位 Java:

  1. 前往:https://www.java.com/en/download/manual.jsp
  2. 单击“Windows 离线(64 位)”
  3. 安装(您可能需要找到下载的文件并双击它,否则可能会自动安装)
  4. 关闭并重新打开 R/RStudio 会话
  5. 一切都会按预期进行!

0
投票

如果您在 macOS 上遇到此问题,这里没有简单的方法:( 特别是当您想使用 R3.4 时。我已经遇到过。

R 3.4、rJava、macOS 甚至更多混乱

对于 R3.3,它更容易一些(R3.3 是使用不同的编译器编译的)。

R、Java、rJava 和 macOS 冒险


0
投票

您还可以尝试使用一个命令即可完成 Java 安装的新 R 包:https://github.com/e-kotov/rJavaEnv

安装软件包:

if (!requireNamespace("remotes", quietly = TRUE)) {
  install.packages("remotes")
}

remotes::install_github("e-kotov/rJavaEnv")

安装Java:

rJavaEnv::java_quick_install(version = 21)

这将下载Java 21(如果您使用的R包有任何特定要求,您可以自由更改版本),将其解压到缓存文件夹并将其链接到您当前的工作目录,设置Java的环境变量在当前会话中工作并保存设置以在当前项目/工作目录的 .Rprofile 中设置此 Java。在包文档中阅读更多信息:http://www.ekotov.pro/rJavaEnv/

附注披露:我是包的作者。

P.P.S 目前这可能不适用于某些 Linux 和基于 Intel 的 macOS 系统。

© www.soinside.com 2019 - 2024. All rights reserved.