有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中加载带有JRI的R库时写入内核转储失败

在java中使用JRI加载一些R库(例如stats4、plyr、dplyr、sqldf)时,我遇到了这个奇怪的错误。 相反,对于其他一些,比如stringr或stats,一切似乎都很好

我编写了一个非常简单的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

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

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

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

使用eclipse开普勒,R版本3.4.3

谢谢你的支持


共 (0) 个答案