我正在尝试rJava在Win 7 64位的计算机上安装.我跑的时候
install.packages("rJava")
Run Code Online (Sandbox Code Playgroud)
一切似乎都很好:
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
Run Code Online (Sandbox Code Playgroud)
但是当我尝试加载库时,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'
Run Code Online (Sandbox Code Playgroud)
我已经安装了Java JRE(尝试32位和64位版本)和JDK(使用32位和64位).我的R版本是R version 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)"
Run Code Online (Sandbox Code Playgroud)
mis*_*bee 147
rJava的最新CRAN版本将jvm.dll自动找到,无需手动设置PATH或JAVA_HOME.但请注意:
C:\Program files\Java\后者中,后者安装在后面,C:\Program Files (x86)\Java\因此它们不会发生冲突.从Java版本9开始,对x86(win32)的支持已经停止.因此,最新的工作多拱设置是安装jdk-8u172-windows-i586.exe和jdk-8u172-windows-x64.exe,然后安装CRAN的二进制包:
install.packages("rJava")
Run Code Online (Sandbox Code Playgroud)
来自CRAN的二进制包应该自己选择jvm.仅限专家:要从源代码构建rJava,您需要--merge-multiarch标记:
install.packages('rJava', type = 'source', INSTALL_opts='--merge-multiarch')
Run Code Online (Sandbox Code Playgroud)
(注意:其他答案/评论中的许多人都说要删除JAVA_HOME,所以考虑一下.我最近没有重新讨论这个问题,知道下面的所有步骤是否仍然是必要的.)
以下是有关如何在Windows 7 64位上启动和运行R + rJava的快速建议.有几种可能性,但大多数都有致命的缺陷.这对我有用:
将jvm.dll添加到您的PATH
R < - > Java桥接器rJava将需要jvm.dll,但R将无法找到该DLL.它驻留在像这样的文件夹中
C:\Program Files\Java\jdk1.6.0_25\jre\bin\server
Run Code Online (Sandbox Code Playgroud)
要么
C:\Program Files\Java\jre6\jre\bin\client
Run Code Online (Sandbox Code Playgroud)
无论你在哪里,将该目录添加到你的Windows PATH变量.(Windows - >"路径" - >"为您的帐户编辑环境变量" - >路径 - >编辑值.)
您可能已经在PATH上安装了Java.如果是这样,您应该在与PATH上已有的Java"home"目录中找到客户端/服务器目录.
为了安全起见,请确保您的架构匹配.如果您有Java Program Files,它是64位,所以您应该运行R64.如果你有Java Program Files (x86),那是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.”
Run Code Online (Sandbox Code Playgroud)
这几乎是正确的.这实际上有效:
install.packages('rJava', .libPaths()[1], 'http://www.rforge.net/')
观看标点符号!神秘的".libPaths()[1],"只是告诉R将软件包安装在主库目录中.出于某种原因,将值保留为空白不起作用,即使它应该是默认值.
use*_*065 111
让rJava工作在很大程度上取决于您的计算机配置:
如果使用64位版本确保,则不要将JAVA_HOME设置为环境变量.如果设置了这个变量,rJava将无法用于任何原因(至少对我而言).您可以轻松检查R是否设置了JAVA_HOME
Sys.getenv("JAVA_HOME")
Run Code Online (Sandbox Code Playgroud)如果您需要设置JAVA_HOME(例如,您需要maven或其他东西),您可以在加载rJava之前使用以下代码在R-session中停用它:
if (Sys.getenv("JAVA_HOME")!="")
Sys.setenv(JAVA_HOME="")
library(rJava)
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,这应该可以解决问题.此外,这将解决问题使用R7上的Win7 64位上的rJava包.我借用了从R:rJava包安装失败中取消设置环境变量的想法.
ROL*_*OLO 30
对我来说,设置 JAVA_HOME可以解决问题(而不是取消设置,如此处给出的另一个答案).在Windows中:
set JAVA_HOME="C:\Program Files\Java\jre7\"
Run Code Online (Sandbox Code Playgroud)
或者在R里面:
Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jre7\\")
Run Code Online (Sandbox Code Playgroud)
但是什么可能是最好的解决方案(因为rJava 0.9-4)完全覆盖了R的Windows JAVA_HOME设置:
options(java.home="C:\\Program Files\\Java\\jre7\\")
library(rJava)
Run Code Online (Sandbox Code Playgroud)
最后一个问题有一个简单的答案:
> .Machine$sizeof.pointer
[1] 8
Run Code Online (Sandbox Code Playgroud)
意思是我正在运行R64.如果我运行32位R它将返回4.仅仅因为您运行64位操作系统并不意味着您将运行64位R,并且从错误消息中看起来您不是.
编辑:如果包有二进制文件,那么它们在不同的目录中.具体细节取决于操作系统.请注意,...rJava/libs/x64/... 在我的MacOS系统中尝试查找dll时发生了LoadLibrary错误... rJava/libs/...`文件夹有3个子目录:i386,ppc和x86_64.(ppc文件显然是无用的行李.)
对不起死灵。我有太多遇到同样的问题,并发现,rJava预计JAVA_HOME到指向JRE。如果您安装了 JDK,那么您很可能会JAVA_HOME指向 JDK。我的快速解决方案:
Sys.setenv(JAVA_HOME=paste(Sys.getenv("JAVA_HOME"), "jre", sep="\\"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
157120 次 |
| 最近记录: |