linux java的启动内存溢出,java - Java的R代码可在Linux上运行,但不能在Windows中运行 - 堆栈内存溢出...
我在做什么?
我正在用Java編寫(xiě)一個(gè)數(shù)據(jù)分析程序,該程序依賴R的arulesViz庫(kù)來(lái)挖掘關(guān)聯(lián)規(guī)則。
我想要什么?
我的目的是將規(guī)則存儲(chǔ)在Java中的String變量中,以便以后進(jìn)行處理。
它是如何工作的?
該代碼分別使用String.format和eval Java和RJava指令組合工作,其行為概括為:
給定格式正確的Java數(shù)據(jù)結(jié)構(gòu),在R中創(chuàng)建一個(gè)數(shù)據(jù)幀。
使用arules庫(kù)將最近創(chuàng)建的數(shù)據(jù)框格式化為事務(wù)列表。
使用事務(wù)列表和一些必要的值作為參數(shù)運(yùn)行apriori算法。
重新排序生成的關(guān)聯(lián)規(guī)則。
如果無(wú)法打印關(guān)聯(lián)規(guī)則,則使用R的write方法將它們寫(xiě)入標(biāo)準(zhǔn)輸出,捕獲輸出并將其存儲(chǔ)在變量中。 我們已經(jīng)將關(guān)聯(lián)規(guī)則轉(zhuǎn)換為字符串變量。
我們返回字符串。
代碼如下:
// 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上運(yùn)行代碼將可以完美地工作,但是當(dāng)我嘗試在Windows中運(yùn)行它時(shí),出現(xiàn)以下錯(cuò)誤,該錯(cuò)誤涉及return行:
Exception in thread "main" java.lang.NullPointerException
每當(dāng)R代碼生成空結(jié)果并將其傳遞給Java時(shí),這都是我常見(jiàn)的錯(cuò)誤。 無(wú)法在Java中對(duì)R代碼進(jìn)行語(yǔ)法檢查,因此,每當(dāng)輸入錯(cuò)誤時(shí),都會(huì)出現(xiàn)此錯(cuò)誤消息。
但是,當(dāng)我在Windows中的R命令行中的括號(hào)中運(yùn)行R代碼時(shí),它可以正常工作,因此語(yǔ)法和數(shù)據(jù)流都可以。
技術(shù)信息
在Linux中,我將R與OpenJDK 10一起使用。
在Windows中,我當(dāng)前正在使用Oracle的最新JDK版本,但是嘗試在Windows的OpenJDK 12中運(yùn)行該程序不能解決任何問(wèn)題。
一切都是64位。
兩種操作系統(tǒng)中使用的IDE是IntelliJ IDEA 2019。
屏幕截圖
Linux運(yùn)行配置:
Windows運(yùn)行配置:
總結(jié)
以上是生活随笔為你收集整理的linux java的启动内存溢出,java - Java的R代码可在Linux上运行,但不能在Windows中运行 - 堆栈内存溢出...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 冰箱二星级部分是什么(有哪些冰箱值得入手
- 下一篇: javascript中push什么意思