无法加载rJava,因为无法加载共享库

我一直在努力在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机器上运行的

跟进Dirk的一些圣人建议:

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

如果您已经阅读过此威胁,并且上述建议都没有发挥作用,那么可能值得进一步尝试:

  • 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变量。

编辑post以便于阅读/格式化后,您的路径中似乎没有Java系统。 我没有使用你试图使用它的操作系统,但是在我的rJava只有在我还安装了Java Run-Time Environment或更好的Java SDK时才有效。

请注意,包清楚地列出

 SystemRequirements: java 

并且rJava网站明确指出以下内容

安装

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

rJava可以使用install.packages(’rJava’)从CRAN安装为任何其他R包。 有关开发版本,请参阅左侧菜单中的files部分。

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

所以我认为我们有一些吸烟枪指向同样的方式。

为了它的价值,在我的PATH放置C:\Program Files\Java\jre6\bin\[server]对我C:\Program Files\Java\jre6\bin\[server] 。 似乎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) 

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

我遇到了同样的问题。 我能够通过从这个网站获得的命令窗口中的一行代码解决问题。

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

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

我有一个类似的错误,不得不做一个额外的修复:将R路径显式设置为… bin \ x64,并且在使用x64 Java和R时也保持一致。