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

时间:2016-06-09 19:58:16

标签: r rjava

加载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’

我在StackOverflow上提到了各种帖子,并尝试相应地进行更改,但没有任何效果。这些是我为解决问题而采取的各种步骤:

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

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

如果有人能帮我解决这个问题,我真的很感激。

谢谢你们!

6 个答案:

答案 0 :(得分:28)

这对我有用 -

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

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

您可以从此链接中选择要安装的Java的确切版本。如果您(由于某种原因)可能在两个版本的R上工作,则可以安装两个版本的Java(安装“Java Runtime Environment”可能足以满足您的需求)。 (来源: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/

答案 1 :(得分:9)

我遇到了同样的问题。请务必检查Java的文件路径。为了解决我需要下载64位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') 

希望有所帮助

答案 2 :(得分:2)

我已经在WIndows中的R,RStudio和rJava的不同全新安装中注意到,解决该错误的原因是:

  1. 卸载R
  2. 重新安装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。

答案 3 :(得分:0)

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

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

所以,

添加' C:/Users/Rohan-PC/Documents/R/win-library/3.1'系统变量列表下的Path变量列表的这条路径(不要与User变量下的PATH变量混淆)。重新启动R并尝试加载库。它有效!!!!!

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

对我来说,它只能在R 64位上工作,而不能在R 32位上工作。 但这当然取决于您的Java版本(64位Java与32位Java)。