【问题标题】: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’

我参考了 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

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

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

谢谢大家!

【问题讨论】:

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

标签: r rjava


【解决方案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 安装中,修复错误的是:

    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。

    【讨论】:

      【解决方案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 位版本。

          解决办法:

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

          64位java的下载地址:

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-07-08
            • 2015-12-23
            • 1970-01-01
            • 2015-01-02
            • 2019-05-29
            • 1970-01-01
            相关资源
            最近更新 更多