r - 在Win7 64位上使用R的rJava包

标签 r rjava

我正在尝试在装有 Win 7 64 位的计算机上安装 rJava。当我运行时

install.packages("rJava")

一切似乎都很好:

Installing package(s) into ‘C:/Users/djq/Documents/R/win-library/2.13’
(as ‘lib’ is unspecified)
trying URL 'http://software.rc.fas.harvard.edu/mirrors/R/bin/windows/contrib/2.13/rJava_0.9-1.zip'
Content type 'application/zip' length 654936 bytes (639 Kb)
opened URL
downloaded 639 Kb

package 'rJava' successfully unpacked and MD5 sums checked

The downloaded packages are in
    C:\TEMP\RtmpW2eAUw\downloaded_packages

但是当我尝试加载库library(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/me/Documents/R/win-library/2.13/rJava/libs/x64/rJava.dll':
  LoadLibrary failure:  %1 is not a valid Win32 application.

Error: package/namespace load failed for 'rJava'

我已经安装了 Java JRE(尝试 32 位和 64 位版本)和 JDK(同时使用 32 位和 64 位)。我的 R 版本是 R 版本 2.13.1 (2011-07-08),我使用的是 RStudio。

如果我尝试使用 32 位 R,我可以很好地加载 rJava。问题只是 rJava 无法在 R 64 位中运行吗?如何判断一个套餐是否只适合 32 位而不是 64 位?

<小时/>

编辑:刚刚发布R.version():

> R.Version()
$platform
[1] "x86_64-pc-mingw32"

$arch
[1] "x86_64"

$os
[1] "mingw32"

$system
[1] "x86_64, mingw32"

$status
[1] ""

$major
[1] "2"

$minor
[1] "13.1"

$year
[1] "2011"

$month
[1] "07"

$day
[1] "08"

$`svn rev`
[1] "56322"

$language
[1] "R"

$version.string
[1] "R version 2.13.1 (2011-07-08)"

最佳答案

更新(2018 年 7 月):

最新的 CRAN 版本的 rJava 会自动查找 jvm.dll,无需手动设置 PATHJAVA_HOME。但请注意:

  • 要在 32 位 R 中使用 rJava,您需要 Java for Windows x86
  • 要在 64 位 R 中使用 rJava,您需要 Java for Windows x64
  • 要构建或检查具有多架构(默认)的 R 包,您需要安装Java For Windows x64以及Java for Windows x86。在 Win 64 上,前者安装在 C:\Program files\Java\ 中,后者安装在 C:\Program Files (x86)\Java\ 中,因此它们不会冲突。

从 Java 版本 9 开始,对 x86 (win32) 的支持已停止。因此,最新的多架构设置是安装 jdk-8u172-windows-i586.exejdk-8u172-windows-x64.exe然后是来自 CRAN 的二进制包:

install.packages("rJava")

来自 CRAN 的二进制包应该自行在 jvm 上获取。 仅限专家:要从源代码构建 rJava,您需要 --merge-multiarch 标志:

install.packages('rJava', type = 'source', INSTALL_opts='--merge-multiarch')
<小时/>

旧答案:

(注意:其他答案/评论中的许多人都说要删除 JAVA_HOME,因此请考虑这一点。我最近没有重新讨论此问题以了解以下所有步骤是否仍然有必要。)

以下是有关如何在 Windows 7 64 位上启动和运行 R + rJava 的一些快速建议。有几种可能性,但大多数都有致命的缺陷。这是对我有用的:

将 jvm.dll 添加到您的路径

rJava(R<->Java 桥)将需要 jvm.dll,但 R 很难找到该 DLL。它位于类似的文件夹中

C:\Program Files\Java\jdk1.6.0_25\jre\bin\server

C:\Program Files\Java\jre6\jre\bin\client

无论您的目录在哪里,都将该目录添加到您的 Windows PATH 变量中。 (Windows ->“路径” ->“编辑您帐户的环境变量” -> PATH ->编辑值。)

您的 PATH 中可能已经有 Java。如果是这样,您应该在与 PATH 上已有的相同的 Java“主”目录中找到客户端/服务器目录。

为了安全起见,请确保您的体系结构匹配。如果您的 Program Files 中有 Java,它是 64 位,因此您应该运行 R64。如果 Program Files (x86) 中有 Java,那么它是 32 位,因此您可以使用普通的 32 位 R。

从 Windows 菜单重新启动 R

如果 R 正在运行,请退出。

从开始菜单,启动R/RGUI,RStudio。这对于让 R 接受您的 PATH 更改非常重要。

安装 rJava 0.9.2。

早期版本不起作用!镜像不是最新的,因此请转到 www.rforge.net 上的源:http://www.rforge.net/rJava/files/ 。请注意那里的建议

“Please use

`install.packages('rJava',,'http://www.rforge.net/')`

to install.”

这几乎是正确的。这确实有效:

install.packages('rJava', .libPaths()[1], 'http://www.rforge.net/')

注意标点符号!神秘的“.libPaths()[1]”只是告诉 R 将包安装在主库目录中。由于某种原因,将该值留空不起作用,即使它应该是默认值。

关于r - 在Win7 64位上使用R的rJava包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35307834/

相关文章:

r - 如何在 R 中 dplyr::inner_join 多 tbls 或 data.frames

r - 为 DBSCAN (R) 选择 eps 和 minpts?

r - 将因素分成多个方面?

r - 在 R 中选择满足某些条件的文件名

r - 使用 rJava 调用第三方 Java jar 的挫败感

r - 修复ggplot2中网格的宽度

jupyter-notebook - rJava 没有加载到带有 R 内核的 Jupyter 笔记本中

r - 无法在 MacOS Mojave 和 R 3.5.2 上加载 rJava

r - 安装软件包时,.onLoad 在 loadNamespace() 中失败( 'rJava')

r - Linux Mint 19.3 Mate 中安装 rJava 的问题