2012-06-26 70 views
0

我基本上有一个程序,使用apache poi将记录从一个excel文件过滤到另一个excel文件。使用netbeans运行时,我的程序运行良好。但是,在执行clean and build并双击dist文件夹内的.jar文件时,它会运行很长时间(太长!),并给我出现以下错误(通过从命令提示符运行程序得到)。outofmemoryerror当运行jar时,但不在netbeans/apache poi中运行

有什么解决办法吗?在清理和建设之前,我已经将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) 

回答

2

'-Xms1500m'标志是运行时标志,而不是编译时标志。你已经在Netbeans中设置了它,所以当你运行Netbeans时它只会得到这个标志。

当你运行该程序在NetBeans外部,你需要像这样运行:

的java -Xms1500m -jar [这里你的程序。

+0

我如何设置它,让我双击jar文件,然后它会像那样运行它?非常感谢! – Laughy

+1

我认为你可以用批处理文件去。双击批处理文件将运行你的项目。 – Zombie

+0

谢谢,该批处理文件与一个VBScript脚本文件结合在一起,隐藏了cmd窗口,完美地工作! – Laughy

相关问题