首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JRI返回代码10

JRI返回代码10
EN

Stack Overflow用户
提问于 2015-06-01 10:42:39
回答 2查看 549关注 0票数 3

我对R很陌生,并试图从java调用一个简单的rJava测试程序。我已经完成了必要的路径设置,当我试图创建一个Rengine实例时,代码失败了。问题似乎与C R.dll+0x26036有关。然而,我对此并不熟悉,也无法解决这个问题。欢迎任何帮助。

我的代码:

代码语言:javascript
复制
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的客户端版本上不启用微型转储

包含更多信息的错误报告文件保存为:

EN

回答 2

Stack Overflow用户

发布于 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的建议)

代码语言:javascript
复制
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();
}}

产出:

代码语言:javascript
复制
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使用的):

  1. 右键单击项目,然后单击属性
  2. 然后选择run
  3. 插入VM选项如下:

票数 2
EN

Stack Overflow用户

发布于 2015-06-01 11:29:55

您必须正确初始化您的Rengine。试试这个:

代码语言:javascript
复制
Rengine re = new Rengine (new String [] {"--vanilla"}, false, null);

当你创建引擎时,一切都应该正常工作。没有参数的构造函数“通过链接到正在调用此构造函数的现有初始化R实例来创建一个新引擎”(来自文档)。这会导致错误,因为没有一个现有的Rengine正在运行(我猜)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30571436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档