【问题标题】:Cannot load rJava because cannot load a shared library无法加载 rJava,因为无法加载共享库
【发布时间】:2011-01-24 20:04:06
【问题描述】:

我一直在努力在 R 中加载 rJava 包。

我收到以下消息

> library(rJava)
Error in inDL(x, as.logical(local), as.logical(now), ...) : 
  unable to load shared library \
     'C:/PROGRA~1/R/R-210~1.1/library/rJava/libs/rJava.dll':
  LoadLibrary failure:  The specified module could not be found.


Error : .onLoad failed in 'loadNamespace' for 'rJava'
Error: package/namespace load failed for 'rJava'

我已经尝试了很多解决方案,以至于它们都在我的脑海中被迷住了。 在某些时候我什至得到了

> R Console: Rgui.exe - System Error The
> program can't start because
> MSVCR71.dll is is missing from your
> computer. Try reinstalling the program
> to fix this problem.

我确保我能想到的一切都在路上

> C:\Program Files\R\Rtools\bin;C:\Program Files\R\Rtools\perl\bin;
  C:\Program Files\R\Rtools\MinGW\bin;%SystemRoot%\system32;
  %SystemRoot%;%SystemRoot%\System32\Wbem;
  %SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;
  C:\Program Files\QuickTime\QTSystem\;
  C:\Program Files\R\R-2.10.1\library\rJava\libs\;
  C:\Program Files\R;C:\Program Files\Java\jre6\bin\client  

接下来我应该尝试什么?

我正在运行 R 版本 2.10.1 (2009-12-14),并且我还尝试了 R 版本 2.10.1 Patched (2010-03-03 r51210)。它在运行 Windows 7 企业版的 Windows 机器上

【问题讨论】:

  • 您的系统上是否有 Java 运行时环境 (JRE) 甚至 Java SDK?
  • 在某个阶段(但相对较早),我去了java.com/en 并从那里下载了java。我现在回到那个网站并使用他们的 Java 测试并收到以下信息:供应商:Sun Microsystems Inc. 版本:Java 6 Update 18 操作系统:Windows 7 6.1 架构:x86。该程序似乎位于 C:\Program Files\Java\jre6 中。我真的不知道路径是如何工作的。是否必须指定到实际的子目录,或者我可以只指向一般附近,软件就会知道在子目录中查找。感谢您重新格式化我的帖子。
  • 正确安装给定的“组件”通常会调整路径,例如这就是 R 所做的。我引用的 rJava 文本谈到了从注册表中获取 Java 信息​​,所以我认为你的盒子里有些东西被破坏了。

标签: java r path


【解决方案1】:

在编辑您的帖子以提高可读性/格式化后,您的路径中似乎没有 Java 系统。我不使用您尝试使用它的操作系统,但在我的rJava 上,仅当我还安装了 Java 运行时环境或者更好的是 Java SDK 时才有效。

注意,包装清楚地列出了

SystemRequirements: java

rJava site 明确指出以下内容

安装

首先,确保你有 已安装 JDK 1.4 或更高版本(某些 平台需要更高版本,请参阅 R 维基)。在 unix 系统上确保 R 配置了 Java 支持。如果 不是,您可以使用 R 重新配置 R CMD javareconf(您可能必须 预先添加 sudo 或以 root 身份运行它 取决于您的安装 - 请参阅 R-ext 手册 A.2.2 详细)。在 在运行时检测到 Windows Java 来自注册表。

rJava 可以像任何其他 R 一样安装 使用 CRAN 打包 install.packages('rJava')。见 左侧菜单中的文件部分 开发版本。

JRI 仅在支持时编译, 即,如果 R 被配置为 框架或 --enable-R-shlib。

所以我认为我们有一些确凿证据指向同一个方向。

【讨论】:

    【解决方案2】:

    跟进德克的一些明智建议:

    • 您的路径可能应该是C:\Program Files\Java\jre6\bin\(删除“客户端”)。
    • 你的路径也应该有C:\Program Files\R\R-2.10.1\bin\。您不需要对 rJava 库的显式引用。然后我还会从路径中删除 C:\Program Files\R
    • 最后,通过转到命令提示符并键入 java -version 或在 R 中键入 system("java -version") 来确认可以访问 Java。
    • 如果您安装了 SDK,那么您还需要一个系统变量 JAVA_HOME,在我的例子中它指向 C:\Sun\SDK\

    【讨论】:

    • 我正忙于查看您的建议。当我看到它是否有效时,我会给你反馈。
    【解决方案3】:

    我遇到了类似的错误,必须进行额外的修复:将 R 路径显式设置为 ...bin\x64,并且在使用 x64 Java 和 R 时保持一致。

    【讨论】:

      【解决方案4】:

      如果您已阅读此威胁,并且到目前为止上述建议均未奏效,那么可能值得进一步尝试:

      • Windows 7
      • R 版本 2.12.1 (2010-12-16) 64 位
      • Java(TM) SE 运行时环境(内部版本 1.6.0_23-b05),Java HotSpot(TM) 64 位服务器 VM(内部版本 19.0-b09,混合模式)

        JAVA_HOME=C:\Program Files\Java\jre6\bin\

        Path= ...;C:\Program Files\Java\jre6\bin\server\;C:\Program Files\R\R-2.12.1\bin\x64\

      最终解决我的问题的方法是将\server\ 显式添加到 PATH 变量中。

      【讨论】:

      • 这里也一样,需要`\server`。我发现的方法是从 R GUI 运行library("rJava"),其中缺少打印的 jvm.dll。 Emacs 打印完全不同的错误消息。在我将 `\server` 添加到路径后,emacs/ess 和 gui 版本都可以正常工作。
      • 我同意。感谢您将这个答案放在这里。
      【解决方案5】:

      无论如何,将C:\Program Files\Java\jre6\bin\[server] 放入我的PATH 对我有用。 rJava 模块似乎可以在那里找到jvm.dll

      这是我正在使用的 R 和 Java 版本(在 64 位 Windows 7 上)。

      Java:

      java version "1.6.0_30"
      Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
      Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode)
      

      R:

      R version 2.14.1 (2011-12-22)
      Copyright (C) 2011 The R Foundation for Statistical Computing
      ISBN 3-900051-07-0
      Platform: x86_64-pc-mingw32/x64 (64-bit)
      

      【讨论】:

        【解决方案6】:

        系统信息: R 版本 3.0.1 (2013-05-16) 平台:x86_64-w64-mingw32/x64(64位)

        我遇到了同样的问题。我能够在从这个website 获得的命令窗口中输入一行代码来解决这个问题。

        Sys.setenv(JAVA_HOME='C:\Program Files\Java\jre7')

        请注意,我使用了这一行,因为我使用的是 64 位系统。有关 32 位示例,请参见网站。

        【讨论】:

          猜你喜欢
          • 2018-09-17
          • 1970-01-01
          • 2018-12-01
          • 2014-10-26
          • 2014-11-06
          • 2021-11-04
          • 2021-10-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多