R - 错误:'rJava' 的 loadNamespace() 中的 .onLoad 失败

Posted

技术标签:

【中文标题】R - 错误:\'rJava\' 的 loadNamespace() 中的 .onLoad 失败【英文标题】:R - Error : .onLoad failed in loadNamespace() for 'rJava'R - 错误:'rJava' 的 loadNamespace() 中的 .onLoad 失败 【发布时间】:2016-10-10 15:30:59 【问题描述】:

在加载 rJava 包时,我收到此错误:

Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: inDL(x, as.logical(local), as.logical(now), ...)

error: unable to load shared object 'C:/Users/ankitagarwal5/Documents/R/win-library/3.2/rJava/libs/x64/rJava.dll':
  LoadLibrary failure:  %1 is not a valid Win32 application.

In addition: Warning message:
  package ‘rJava’ was built under R version 3.2.3 
Error: package or namespace load failed for ‘rJava’

我参考了 *** 上的各种帖子并尝试进行相应的更改,但没有任何效果。以下是我为解决此问题而采取的各种步骤:

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

这不起作用。

然后我尝试了这个:

options(java.home="C:\\Program Files\\Java\\jre1.8.0_91\\")
library(rJava)

这也没有用。

我的 jvm.dll 位于我的 Windows 7 64 位操作系统中的这个位置 - C:\Program Files (x86)\Java\jre1.8.0_91\bin\client

我还在环境变量中的 PATH 变量中添加了C:\Program Files (x86)\Java\jre1.8.0_91\bin\client,并重新启动了 RStudio,并尝试再次安装和加载 rJava。那也没用。

如果有人能帮我解决这个问题,我将不胜感激。

谢谢大家!

【问题讨论】:

尝试从 shell R CMD javareconf 运行并重新安装 rJava。当然不能保证。 请不要在问题中编辑您的答案。取而代之的是页面底部的答案部分。 @josliber ,进行了建议的更改。谢谢。 类似 OS X:***.com/questions/1348842/… 提醒任何阅读此线程并遇到问题的人:首先尝试 OP 尝试的代码(但对他/她不起作用)。我遇到了一个类似的错误,通过运行他们给出的第一个示例来修复。希望这可以帮助某人。 【参考方案1】:

这对我有用 -

此错误通常可以通过安装适合您使用的 R 版本类型(即 64 位 R 或 32 位 R)的 Java 版本(即 64 位 Java 或 32 位 Java)来解决。此问题很容易影响 Windows 7 用户,因为他们可能安装了与他们正在使用的 R 版本不同的 Java 版本。

请注意,需要“手动下载并安装”64 位版本的 JAVA。默认情况下,下载页面提供 32 位版本。

您可以从此链接中选择您希望安装的 Java 的确切版本。如果您可能(出于某种原因)同时使用两个版本的 R,则可以安装两个版本的 Java(安装“Java 运行时环境”可能足以满足您的需要)。 (来源:Uwe Ligges)

其他可能的解决方案是尝试重新安装 rJava。

如果这不起作用,您还可以通过在加载库之前设置来手动设置 Java 位置的目录:

Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre7') # for 64-bit version
Sys.setenv(JAVA_HOME='C:\\Program Files (x86)\\Java\\jre7') # for 32-bit version
library(rJava)

参考此链接 - http://www.r-bloggers.com/how-to-load-the-rjava-package-after-the-error-java_home-cannot-be-determined-from-the-registry/

【讨论】:

打猎后非常适合我。完全有道理,希望 rJava 包中的调试消息更指向这个方向。 that fits to the type of R version that you are using 怎么可能轻易确定这一点? 谢谢 - 尝试安装 tabulizer 包时遇到同样的问题,这对我有用。【参考方案2】:

我遇到了同样的问题。请务必检查 Java 的文件路径。为了解决这个错误,我需要下载 64bit Java 版本。但是,R 中的以下代码不起作用,因为该文件夹对于 Java 的最新版本不正确:

Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre7') # for 64-bit version

相反,我将名称更改为:

Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre1.8.0_144') 

希望有帮助

【讨论】:

【参考方案3】:

我注意到在 WIndows 中不同的全新 R、RStudio 和 rJava 安装中,修复错误的是:

    卸载 R 重新安装 R,但只选择一种架构。例如,x64 或 x86,但不能同时使用两者。这往往会使 R 或 RStudio 在编译时感到困惑。

在我的情况下,我修复了消息

Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: inDL(x, as.logical(local), as.logical(now), ...)

error: unable to load shared object 'C:/Users/ankitagarwal5/Documents/R/win-library/3.2/rJava/libs/x64/rJava.dll':
  LoadLibrary failure:  %1 is not a valid Win32 application.

按照上述步骤 1 和 2。

【讨论】:

【参考方案4】:

我尝试了其他人所说的无效。对我来说,解决方案是消除我计算机上 R 版本 32 位的旧文件夹和快捷方式,即使卸载后仍然存在。

【讨论】:

【参考方案5】:

我猜你的操作系统架构和 R 架构不匹配。如果它们匹配,则可能是以下问题

在我将 R 库路径添加到我的 Windows 7 上的环境变量列表后,它对我有用。

所以,

将“C:/Users/Rohan-PC/Documents/R/win-library/3.1”这个路径添加到系统变量列表下的路径变量列表中(不要与用户变量下的路径变量混淆)。重新启动 R 并尝试加载库。好用!!!!!!

【讨论】:

【参考方案6】:

如果您同时安装了 64 位 R 和 32 位 R 版本,请分别尝试。

对我来说,它适用于 R 64 位,但不适用于 R 32 位。 但这当然取决于您的 Java 版本(64 位 Java 与 32 位 Java)。

【讨论】:

实际上问题似乎与 32 位和 64 位有关,但对于答案,您应该更加确定问题和解决方案。【参考方案7】:

当 Java 更新到 32 位时发生这种情况,但 R 需要 64 位版本。

解决办法:

    只需download the 64-bit version of Java 安装它。 重启 RStudio 一切正常

64位java的下载地址:

【讨论】:

以上是关于R - 错误:'rJava' 的 loadNamespace() 中的 .onLoad 失败的主要内容,如果未能解决你的问题,请参考以下文章

加载 rJava 时出错

解惑rJava R与Java的快速通道

R:无法安装 rJava;啥是 r-api-3.4?

怎么安装r语言中的rjava包

R语言中 安装rJava 和Rwordseg

使 rJava 或 R 使用不同的(以前的)Java 版本