Java JRI返回代码10

Java JRI返回代码10,java,r,exception,rjava,jri,Java,R,Exception,Rjava,Jri,我是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

我是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\u HOME=D:\Program Files\R\R-3.2.0\bin\

Java运行时环境检测到一个致命错误:

pc=0x000000006c726036处的异常访问冲突(0xc0000005), pid=4588,tid=1872

JRE版本:Java(TM)SE运行时环境(8.0_45-b14)(build 1.8.0_45-b14) Java虚拟机:Java热点(TM)64位服务器虚拟机(25.45-b02混合模式windows-amd64压缩oops) 问题帧: C[R.dll+0x26036]

无法写入核心转储。默认情况下,在客户端版本的Windows上不启用小型转储


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

您必须正确初始化
引擎。试试这个:

Rengine re = new Rengine (new String [] {"--vanilla"}, false, null);

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

在您的环境设置中,请将R\u HOME更改为
D:\Program Files\R\R-3.2.0
,而不是R\u HOME=
D:\Program Files\R\R-3.2.0\bin\
,请让我知道这是否起作用:),注意,您的代码对我有效(也使用尼古拉的建议)

输出:

run:
R_HOME =C:\Program Files\R\R-2.15.3
7.5
BUILD SUCCESSFUL (total time: 0 seconds)
您还需要设置
D:\ProgramFiles\R\R-3.2.0\bin\x64;D:\Misc\RLib\rJava\jri\x64
这需要在vm选项中设置,而不是作为环境变量设置。 这是在
Netbeans
中如何实现的(我使用的就是这个):

  • 右键单击项目,然后单击属性
  • 然后选择运行
  • 插入VM选项,如下所示:

  • 您是否设置了VM选项?您需要设置VM选项,例如在netbeans中,我为JRI插入了以下选项-Djava.library.path='C:\Program Files\R\R-2.15.3\library\rJava\JRI\x64'您的问题突然结束:“包含更多信息的错误报告文件另存为:”…?@YehoshaphatSchellekens,我添加了
    System.setProperty(“JRI”,“Djava.library.path='D:/Misc/RLib/rJava/JRI/x64')
    到我的代码。它仍然返回相同的错误。另外,由于我已将rJava安装到我的exclipse,我已在首选项中设置DLL和JRI的路径。我以前在调试错误时尝试过这一点。使用这行代码不会抛出我在问题中打印的堆栈跟踪错误,但程序执行n以返回代码2终止。在eclipse中使用调试模式,我可以看到它在这个Rengine实例创建行中出现故障。它仍然不适合我。我的设置是否有问题?我在这里发布了完整的输出:您能发布所有环境变量吗?您是否正确设置了JAVA_HOME和路径?JAVA_HOME:C:\Program Files\Java\jdk1.8.0_45 JRE_主页:C:\Program Files\Java\jre1.8.0_45路径:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\Wbem;%SystemRoot%\system32\WindowsPowerShell\v1.0\;C:\Program Files(x86)\MySQL\MySQL服务器5.5\bin;D:\650444\Work\Tools\Octave\Octave3.6.4\u gcc4.6.2\bin;C:\Program Files\Java\jdk1.8.0\u 45\bin;C:\Program Files\Java\jre1.8.0\u 45\bin\Server;D:\Program Files\R\R-3.2.0\bin\x64;D:\Misc\RLib\rJava\jri\x64查看我的新答案
    run:
    R_HOME =C:\Program Files\R\R-2.15.3
    7.5
    BUILD SUCCESSFUL (total time: 0 seconds)