我已安装 JRI 以在 Windows 7 上使用 32 位 R 3.0.2 和 Java jdk1.7.0_45 与 NetBeans 7.4 一起运行。
我正在使用以下 Java 函数。
import org.rosuda.JRI.Rengine;
import org.rosuda.JRI.REXP;
import org.rosuda.JRI.RList;
void testJRI(){
// Start JRI engine.
String[] Rargs = {"--vanilla"};
Rengine re = new Rengine(Rargs, false, null);
if (!re.waitForR()) {
System.out.println("Cannot load R");
return null;
}
REXP load=re.eval("source('C:\\\\searchPath\\\\nonparametricAnova.r')");
re.end();
return;
}
第一次调用该函数时,一切正常。但是第二次,变量 load 为 null - 表示失败。
我用以下简单脚本替换了 nonparametricAnova.r R 函数
simple<-function(){
a=1
a
}
我将其命名为 simple.r 并使用
REXP load=re.eval("source('C:\\\\searchPath\\\\simple.r')");
现在,第二次通过,它挂起
Rengine re = new Rengine(Rargs, false, null);
我注意到
load=re.eval("refClusterMeasurements<-read.csv(\"C:/SearchPath/fileName.csv\", header=TRUE)");
即使“name.csv”是一个最小大小的文件,第二次也会失败。