我尝试用Java运行我的R脚本,因此我安装了JRI。并运行示例,我在64位Windows 7上使用Eclipse。示例代码的一部分如下:
public static void main(String[] args) {
System.out.println("Creating Rengine (with arguments)");
Rengine re=new Rengine(args, false, null);
System.out.println("Rengine created, waiting for R");
if (!re.waitForR()) {
System.out.println("Cannot load R");
return;
}
然而,每次我运行它。打印出“创建Rengine(带参数)”之后,它终止打印出“Rengine创建,等待R”
我不知道什么是正确的输入参数,我试图在eclipse运行配置的程序参数下添加“--no-save”,但仍然无济于事。
有什么建议吗?非常感谢
答案 0 :(得分:27)
在Mac上安装R:
参考:http://cran.r-project.org/mirrors.html 参考:http://cran.r-project.org/bin/macosx/RMacOSX-FAQ.html
下载MacOSX二进制R-2.13.0.pkg在Mac OS X上安装R(JIR)的Java接口
JIR现在是rJava的一部分。
> install.packages("rJava")
--- Please select a CRAN mirror for use in this session ---
trying URL 'http://cran.csiro.au/bin/macosx/leopard/contrib/2.13/rJava_0.8-8.tgz'
Content type 'application/x-gzip' length 769006 bytes (750 Kb)
opened URL
==================================================
downloaded 750 Kb
The downloaded packages are in
/var/folders/ZZ/ZZ7tAIJsFU8FDfPPp7H53++++TM/-Tmp-//RtmpCHz9Mh/dow
> library(rJava)
> .jinit()
> s <- .jnew("java/lang/String", "Hello World!")
> print(s)
[1] "Java-Object{Hello World!}"
在Mac OS X上使用Eclipse运行JRI示例Java
将rJava / jri / examples / rtest.java复制到Eclipse JRI/src/
。
将JRI.jar从jri目录复制到JRI/lib/
并将其添加到构建路径。
rtest.java
编译但它没有作为Java应用程序运行。
显然,它需要运行:./run rtest
。
在检查了rJava包附带的“run”shell脚本(在./jri/
内)后,我在Eclipse运行配置中设置了这些脚本:
Environnment:
R_HOME = /Library/Frameworks/R.framework/Resources
PATH=/Library/Frameworks/R.framework/Resources/bin/
此外,示例运行shell脚本设置以下环境变量:
R_INCLUDE_DIR=Library/Frameworks/R.framework/Resources/include
R_SHARE_DIR=Library/Frameworks/R.framework/Resources/share
R_DOC_DIR=Library/Frameworks/R.framework/Resources/doce
JRI_LID_PATH=Library/Frameworks/R.framework/Resources/lib:/Library/Frameworks/R.framework/Resources/bin
VM参数:
-Djava.library.path=/Library/Frameworks/R.framework/Resources/library/rJava/jri/
JRI.jar现在在构建路径中引用,即:
/Library/Frameworks/R.framework/Resources/library/rJava/jri/JRI.jar.
这会自动显示在运行配置中的-cp
标签下。
此外,运行配置需要程序参数:--save, --no-save or --vanilla
。
答案 1 :(得分:1)
有可能找不到jri.dll或R.dll。如果你什么都看不见,甚至没有例外,那么JVM就会崩溃。寻找像hs_pid *这样的文件,告诉你哪个库是罪魁祸首。
答案 2 :(得分:1)
我在自己与Windows上的R斗争中发现了这个问题,尽管在Linux上它只是起作用。
我也发现我正在“创造Rengine(带参数)”,但没有进一步。
找到jri.dll和R.dll,我能够证明:
jri.dll - 从当前目录中删除它,生成错误:
找不到JRI原生库! 请确保JRI本机库位于java.library.path。
中列出的目录中java.lang.UnsatisfiedLinkError:java.library.path中没有jri
(在复制它时,请确保采用正确的32或64位版本以避免“无法在AMD 64位平台上加载IA 32位.dll”类型错误)
R.dll位于安装目录C:\ Program Files \ R \ R-2.15.0 \ bin \ x64下 如果在run.bat文件(它是)中错误地设置了PATH,那么你会得到稍微不同的错误
找不到JRI原生库! 请确保JRI本机库位于java.library.path。
中列出的目录中java.lang.UnsatisfiedLinkError:[CURRENT DIR] \ jri.dll:找不到依赖库
正确设置这两件事(并且没有生成hs_pid *文件)我发现问题是run.bat中缺少R_HOME。添加
set R_HOME=C:\Program Files\R\R-2.15.0\
修好了,现在一切似乎都适合我。我不需要在脚本中添加--save, - no-save或--vanilla。此外,它有'runtest'硬编码,所以./run.bat runtest2不会是DWYM。
简短回答:Windows run.bat脚本被破坏(而Linux'运行'脚本开箱即用)。
答案 3 :(得分:1)
使用rJava,Windows 7 64位时遇到了同样的问题。
这是解决方案。
在eclipse中添加-Djava.library.path =“$ {env_var:PATH}” - &gt;项目 - &gt;运行方式 - &gt;运行配置 - &gt;参数。
确保System.getProperty(“java.library.path”)指向jri.dll
我花了很多时间在这个问题上,所以随时提出任何问题;)
答案 4 :(得分:0)
以下错误可能是由于未设置两个路径,一个未找到r.dll或/和未找到jri.dll。确保系统路径包含32位系统
%R_HOME%\ bin中;%R_HOME%\ bin中\ I386;%R_HOME%\库\ rJava \ JRI \ i386的
还要确保从R控制台安装install.packages(“rJava”)插件
import numpy as np
>> td / np.timedelta64(1, 'h')
26.0