我正在尝试在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 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)"
答案 0 :(得分:145)
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")
来自CRAN的二进制包应该自己选择jvm。 仅限专家:要从源代码构建rJava,您需要--merge-multiarch
标记:
install.packages('rJava', type = 'source', INSTALL_opts='--merge-multiarch')
(注意:其他答案/评论中的许多人都说要删除JAVA_HOME,所以考虑一下。我最近没有重新讨论这个问题,知道下面的所有步骤是否仍然是必要的。)
以下是有关如何在Windows 7 64位上启动和运行R + rJava的快速建议。有几种可能性,但大多数都有致命的缺陷。这对我有用:
将jvm.dll添加到您的路径
r-Java桥接器rJava将需要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上可能已有Java。如果是这样,您应该在与PATH上已有的Java“home”目录中找到客户端/服务器目录。
为了安全起见,请确保您的架构匹配。如果您在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将软件包安装在主库目录中。出于某种原因,将值保留为空白不起作用,即使它应该是默认值。
答案 1 :(得分:107)
让rJava工作在很大程度上取决于您的计算机配置:
如果使用64位版本,请确保未将JAVA_HOME 设置为环境变量。如果设置了这个变量,rJava将无法用于任何原因(至少对我而言)。您可以在R中轻松检查JAVA_HOME是否设置为
Sys.getenv("JAVA_HOME")
如果您需要设置JAVA_HOME(例如,您需要maven或其他东西),您可以在加载rJava之前使用以下代码在R会话中停用它:
if (Sys.getenv("JAVA_HOME")!="")
Sys.setenv(JAVA_HOME="")
library(rJava)
在大多数情况下,这应该可以解决问题。此外,这将解决问题使用R7上的Win7 64位上的rJava包。我借用了从R: rJava package install failing取消设置环境变量的想法。
答案 2 :(得分:29)
对我来说,设置 JAVA_HOME做了伎俩(而不是取消设置,如此处给出的另一个答案)。在Windows中:
set JAVA_HOME="C:\Program Files\Java\jre7\"
或在R:
内Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jre7\\")
但可能最佳解决方案(因为rJava 0.9-4)完全覆盖了R J:Windows JAVA_HOME设置:
options(java.home="C:\\Program Files\\Java\\jre7\\")
library(rJava)
答案 3 :(得分:7)
最后一个问题有一个简单的答案:
> .Machine$sizeof.pointer
[1] 8
意思是我正在运行R64。如果我运行32位R它将返回4.仅仅因为您运行64位操作系统并不意味着您将运行64位R,并且从错误消息中看起来您不是。
编辑:如果包中包含二进制文件,则它们位于不同的目录中。具体细节取决于操作系统。请注意,尝试在...rJava/libs/x64/...
中找到dll时发生了LoadLibrary错误。在我的MacOS系统上,... rJava / libs / ...`文件夹有3个子目录:i386,ppc和x86_64。 (ppc文件显然是无用的行李。)
答案 4 :(得分:4)
抱歉,你好。
我也遇到了同样的问题,发现rJava
期望JAVA_HOME
指向JRE。如果安装了JDK,则很可能是JAVA_HOME
指向JDK。我的快速解决方案:
Sys.setenv(JAVA_HOME=paste(Sys.getenv("JAVA_HOME"), "jre", sep="\\"))
答案 5 :(得分:3)
我在遇到这个问题时确定安装的Java包时遇到了一些麻烦,因为之前的答案对我来说并不合适。为了解决这个问题,我输入了:
Sys.setenv(JAVA_HOME="C:/Program Files/Java/
然后点击标签,两个建议的目录是" jre1.8.0_31 /"和" jre7 /"
Jre7没有解决我的问题,但是jre1.8.0_31 /没有。最后的答案正在运行(在库(rJava)之前):
Sys.setenv(JAVA_HOME="C:/Program Files/Java/jre1.8.0_31/")
我使用的是64位Windows 8.1希望这有助于其他人。
<强>更新强>
检查你的版本以确定X应该是什么(自从这篇文章以来我已经改变了几次):
Sys.setenv(JAVA_HOME="C:/Program Files/Java/jre1.8.0_x/")
答案 6 :(得分:3)
我和rJava有一个相关的问题。它会加载但是依赖它的包不会加载。
当真正的修复是强迫安装程序忘记i386时,用户可能会浪费大量时间使用jvm.dll和PATH以及JAVA_HOME。使用install.packages选项。 (这在使用drat库时也有效。(归功于Dason)
install.packages("SqlRender",INSTALL_opts="--no-multiarch")
此外,您可以使用win命令修改您的用户路径,如下所示:
setx PATH "C:\Program Files\Java\jre1.8.0_102\bin\server;%PATH%"
答案 7 :(得分:0)
我的浏览器需要32位JRE,而R和rJava需要64位JRE。 32位JRE安装在默认位置。经过一些实验,我发现我只需要一个 misterbee 建议来让rJava(版本 0.9-6 )为我工作。我所做的只是添加我的64位Java安装的路径:
C:\apps\Java\jre\bin\server\jvm.dll
到我的路径环境变量的顶部(您的路径可能会有所不同)并删除我的JAVA_HOME,建议 user2161065 。我把它放在条目的前面
C:\ProgramData\Oracle\Java\javapath
Oracle安装程序在路径顶部插入的指向32位JRE的一些符号链接。通过将条目添加到64位jvm.dll,看起来像rJava可以找到它需要的东西。
答案 8 :(得分:0)
我认为这是一次更新。在安装JDK之前,我无法安装rJava(在Windows上) Javac is not found 和 javac not working in windows command prompt。我收到的消息是
'javac' is not recognized as an internal or external command, operable program or batch file.
JDK包括JRE,并根据 https://cran.r-project.org/web/packages/rJava/index.html 当前版本(2015年7月29日发布的0.9-7) of rJava
SystemRequirements: Java JDK 1.2 or higher (for JRI/REngine JDK 1.4 or higher), GNU make
所以你有:如果rJava因为无法找到javac而无法安装,并且你安装了JRE,那么试试JDK。另外,请确保JAVA_HOME
指向JDK而不是JRE。
答案 9 :(得分:0)
我通过Windows 7 x64计算机上的 uninstalling显然冗余的Java软件解决了这个问题。我通过首先卸载所有Java应用程序和然后installing a fresh Java version 来实现这一目标。 (稍后我pointed R 3.4.3 x86_64-w64-mingw32 to the Java path,但我不认为这是真正的问题。)今天只剩下Java 8 Update 161(64位)8.0.1610.12了。在此之后,2018-02-21 23:52:42.480336-0800 RunManager[1878:1120392] 4.8.1 - [Firebase/Analytics][I-ACS035001] Cannot create Value type with unsupported value. The Value has to be NSNumber or NSString. Value: {
"2018-02-22 07:46:37 +0000" = "-1";
"2018-02-22 07:46:38 +0000" = "-1";
"2018-02-22 07:46:39 +0000" = "-1";
}
2018-02-21 23:52:42.480414-0800 RunManager[1878:1120392] 4.8.1 - [Firebase/Analytics][I-ACS016000] Event parameter value must be of type NSString or NSNumber. Type: _TtGCs26_SwiftDeferredNSDictionarySSSi_
确实完美无缺。
答案 10 :(得分:0)
注意:根据Java开发工具包和Java的版本,jdk1.8.0_201和jre1.8.0_201将会更改
要检查安装,请打开CMD \ Type javac \ Press Enter,然后键入java \ press enter,它将显示
在RStudio中运行
Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jdk1.8.0_201")
注意:jdk1.8.0_201将根据Java开发套件的版本进行更改
现在,您可以毫无问题地安装和加载rJava软件包。
答案 11 :(得分:0)
这是Update(2018年7月)的后续措施。我使用的是64位Windows 10,但设置为使用Rtools从源代码为32位和64位构建r软件包。我的64位jdk是jdk-11.0.2。如果可以,我将在RStudio中进行所有操作。截至2019年3月,rjava已通过<= jdk11测试,请参见github issue #157。
Sys.setenv(JAVA_HOME="C:/Program Files/Java/jdk-11.0.2")
Sys.getenv("JAVA_HOME")
install.packages("rJava",,"http://rforge.net")
仅供参考,rstudio脚本控制台不喜欢双逗号...但是可以使用!