linux java的启动内存溢出,java - Java的R代码可在Linux上运行,但不能在Windows中运行 - 堆栈内存溢出...

我在做什么?

我正在用Java编写一个数据分析程序,该程序依赖R的arulesViz库来挖掘关联规则。

我想要什么?

我的目的是将规则存储在Java中的String变量中,以便以后进行处理。

它是如何工作的?

该代码分别使用String.format和eval Java和RJava指令组合工作,其行为概括为:

给定格式正确的Java数据结构,在R中创建一个数据帧。

使用arules库将最近创建的数据框格式化为事务列表。

使用事务列表和一些必要的值作为参数运行apriori算法。

重新排序生成的关联规则。

如果无法打印关联规则,则使用R的write方法将它们写入标准输出,捕获输出并将其存储在变量中。 我们已经将关联规则转换为字符串变量。

我们返回字符串。

代码如下:

// Step 1

Rutils.rengine.eval("dataFrame

//Step 2

Rutils.rengine.eval("transList

//Step 3

Rutils.rengine.eval(String.format("info

// Step 4

Rutils.rengine.eval("orderedRules

// Step 5

REXP res = Rutils.rengine.eval("rulesAsString

// Step 6

return res.asString().replaceAll("'", "");

怎么了?

在Linux上运行代码将可以完美地工作,但是当我尝试在Windows中运行它时,出现以下错误,该错误涉及return行:

Exception in thread "main" java.lang.NullPointerException

每当R代码生成空结果并将其传递给Java时,这都是我常见的错误。 无法在Java中对R代码进行语法检查,因此,每当输入错误时,都会出现此错误消息。

但是,当我在Windows中的R命令行中的括号中运行R代码时,它可以正常工作,因此语法和数据流都可以。

技术信息

在Linux中,我将R与OpenJDK 10一起使用。

在Windows中,我当前正在使用Oracle的最新JDK版本,但是尝试在Windows的OpenJDK 12中运行该程序不能解决任何问题。

一切都是64位。

两种操作系统中使用的IDE是IntelliJ IDEA 2019。

屏幕截图

Linux运行配置:

a7bdb0c2f9b0e81c7176711a718c8070.png

Windows运行配置:

df8d267b5276de0426cdd9f7c308014f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值