Java JRI返回代码10
我是R新手,试图从java调用一个简单的rJava测试程序。我已经完成了必要的路径设置,何时完成 我正在尝试创建一个代码失败的Rengine实例。问题似乎出在C[R.dll+0x26036]上。然而,我对这一点还不熟悉,无法理解这个问题。欢迎任何帮助 我的代码: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
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选项,例如在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)