在Java中使用JRI加载R库时无法编写核心转储

时间:2018-03-05 14:40:12

标签: java r eclipse jri

在尝试使用Java中的JRI加载一些R库(例如stats4,plyr,dplyr,sqldf)时,我遇到了这个奇怪的错误。 相反,对于其他一些人,比如字符串或统计数据,一切都显得很好。

我编写了一个非常简单的Java程序,只是为了尝试JRI功能,并且只要我执行R命令库(plyr)就会崩溃。

public static void main(String[] args) {
    // TODO Auto-generated method stub
    //check if the R_Home variable is set up correctly
    System.out.println("R_HOME =" + System.getenv("R_HOME"));
    // create a script engine manager:
    Rengine re = new Rengine(new String[] {"--vanilla"},false,null);

    re.eval("vet<-seq(1,6)");
    re.eval("media<-mean(vet)");
    System.out.print(re.eval("print(media)"));
    re.eval("library(plyr)");       
}

该程序打印出R_HOME变量和R变量媒体中包含的值3.5,但随后崩溃给出了奇怪的错误:

# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_STACK_OVERFLOW (0xc00000fd) at pc=0x149f3806, pid=15672, tid=0x00003b8c
#
# JRE version: Java(TM) SE Runtime Environment (8.0_152-b16) (build 1.8.0_152-b16)
# Java VM: Java HotSpot(TM) Client VM (25.152-b16 mixed mode windows-x86 )
# Problematic frame:
# C  [R.dll+0xc3806]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows

正如在另一个与类似问题相关的答案中所建议的,我也尝试用以下代码行替换新Rengine的创建,但库加载再次失败。

... 
String args1[] = new String[10]; 
Rengine re = new Rengine(args,false,null); 
...

我是JRI的新手,所以我不知道还有什么可以尝试正确加载R库。我甚至检查R库以检查它们是否已安装且所有这些都在那里。 除此之外,我已经直接在R中运行了一个带有这些库的R脚本,并且没有错误。

使用eclipse kepler,R版本3.4.3

感谢您的支持!

0 个答案:

没有答案
相关问题