我对R很陌生,并试图从java调用一个简单的rJava测试程序。我已经完成了必要的路径设置,当我试图创建一个Rengine实例时,代码失败了。问题似乎与C R.dll+0x26036有关。然而,我对此并不熟悉,也无法解决这个问题。欢迎任何帮助。
我的代码:
import org.rosuda.JRI.REXP;
import org.rosuda.JRI.Rengine;
public class First_R {
public static void main (String args []) {
System.out.println("Start");
Rengine.DEBUG = 5;
System.out.println("Starting Rengine..");
System.out.println("R_HOME =" + System.getenv("R_HOME"));
final Rengine re = new Rengine ();
// Check if the session is working.
if (!re.waitForR()) {
return;
}
re.assign("x", new double[] {1.5, 2.5, 3.5});
REXP result = re.eval("(sum(x))");
System.out.println(result.asDouble());
re.end();
}}
输出:
开始启动引擎..。R_HOME =D:\Program \R\R-3.2.0\bin\
Java运行时环境检测到了一个致命错误:
EXCEPTION_ACCESS_VIOLATION (0xc0000005)在pc=0x000000006c726036,pid=4588,tid=1872
JRE版本: Java(TM) SE运行时环境(8.0_45-b14) (build 1.8.0_45-b14) Java : Java HotSpot(TM) 64位服务器VM (25.45-b02混合模式windows-amd64 64压缩对象)问题帧:C R.dll+0x26036
写核心转储失败。默认情况下,在Windows的客户端版本上不启用微型转储
包含更多信息的错误报告文件保存为:
发布于 2015-06-02 07:28:01
在您的环境设置中,请将R_HOME更改为D:\Program Files\R\R-3.2.0,而不是R_HOME =D:\Program Files\R\R-3.2.0\bin\,请告诉我是否完成了任务:),请注意,您的代码也适用于我(也使用nicola的建议)
package rundavid;
import org.rosuda.JRI.REXP;
import org.rosuda.JRI.Rengine;
public class RunDavid {
public static void main (String args []) {
System.out.println("R_HOME =" + System.getenv("R_HOME"));
Rengine re = new Rengine (new String [] {"--vanilla"}, false, null);
// Check if the session is working.
if (!re.waitForR()) {
return;
}
re.assign("x", new double[] {1.5, 2.5, 3.5});
REXP result = re.eval("(sum(x))");
System.out.println(result.asDouble());
re.end();
}}产出:
run:
R_HOME =C:\Program Files\R\R-2.15.3
7.5
BUILD SUCCESSFUL (total time: 0 seconds)另外,您还需要设置D:\Program Files\R\R-3.2.0\bin\x64;D:\Misc\RLib\rJava\jri\x64 --您需要在vm选项中设置它,而不是作为环境变量。这是如何在Netbeans中完成的(这是im使用的):
run
发布于 2015-06-01 11:29:55
您必须正确初始化您的Rengine。试试这个:
Rengine re = new Rengine (new String [] {"--vanilla"}, false, null);当你创建引擎时,一切都应该正常工作。没有参数的构造函数“通过链接到正在调用此构造函数的现有初始化R实例来创建一个新引擎”(来自文档)。这会导致错误,因为没有一个现有的Rengine正在运行(我猜)。
https://stackoverflow.com/questions/30571436
复制相似问题