簡體   English   中英

在運行jar時出錯,但在netbeans / apache poi中運行時卻沒有

[英]outofmemoryerror when running jar but not when running in netbeans/ apache poi

我基本上有一個程序,使用apache poi將記錄從一個excel文件過濾到另一個excel文件。 當我使用netbeans運行時,我的程序運行正常。 但是,在干凈並構建並雙擊dist文件夾中的.jar文件時,它會運行很長時間(太長時間!)並給出以下錯誤(我從命令提示符運行程序得到)。

它有什么工作嗎? 在清理和構建之前,我已經將堆大小增加到netbeans中的-Xms1500m。

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    at org.apache.xmlbeans.impl.store.Saver$TextSaver.resize(Saver.java:1592)
    at org.apache.xmlbeans.impl.store.Saver$TextSaver.preEmit(Saver.java:1223)
    at org.apache.xmlbeans.impl.store.Saver$TextSaver.emit(Saver.java:1144)
    at org.apache.xmlbeans.impl.store.Saver$TextSaver.emitElement(Saver.java:926)
    at org.apache.xmlbeans.impl.store.Saver.processElement(Saver.java:456)
    at org.apache.xmlbeans.impl.store.Saver.process(Saver.java:307)
    at org.apache.xmlbeans.impl.store.Saver$TextSaver.saveToString(Saver.java:1727)
    at org.apache.xmlbeans.impl.store.Cursor._xmlText(Cursor.java:546)
    at org.apache.xmlbeans.impl.store.Cursor.xmlText(Cursor.java:2436)
    at org.apache.xmlbeans.impl.values.XmlObjectBase.xmlText(XmlObjectBase.java:1455)
    at org.apache.poi.xssf.model.SharedStringsTable.getKey(SharedStringsTable.java:130)
    at 

org.apache.poi.xssf.model.SharedStringsTable.addEntry(SharedStringsTable.java:176)
    at org.apache.poi.xssf.usermodel.XSSFCell.setCellType(XSSFCell.java:755)

    at equity.EquityFrame_Updated.copyRowsFromOldToNew(EquityFrame_Updated.java:646)
    at equity.EquityFrame_Updated.init(EquityFrame_Updated.java:133)
    at equity.EquityFrame_Updated.createAndShowGUI(EquityFrame_Updated.java:71)
    at equity.EquityFrame_Updated.<init>(EquityFrame_Updated.java:50)
    at equity.FileOpener.generateButtonPressed(FileOpener.java:160)
    at equity.FileOpener.access$100(FileOpener.java:17)
    at equity.FileOpener$2.actionPerformed(FileOpener.java:61)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)

'-Xms1500m'標志是運行時標志,而不是編譯時標志。 你已經將它設置在Netbeans中,所以它只在你運行Netbeans時得到那個標志。

當你在Netbeans之外運行程序時,你需要像這樣運行它:

java -Xms1500m -jar [你的程序在這里]。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM