Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
崩溃发生在Java虚拟机外部,在编辑excel文件时出现本机代码错误_Java_Eclipse_Excel_Runtime Error_Apache Poi - Fatal编程技术网

崩溃发生在Java虚拟机外部,在编辑excel文件时出现本机代码错误

崩溃发生在Java虚拟机外部,在编辑excel文件时出现本机代码错误,java,eclipse,excel,runtime-error,apache-poi,Java,Eclipse,Excel,Runtime Error,Apache Poi,我正在尝试使用apachepoi和OPCPackage编辑excel文件,但由于一些奇怪的原因,它对我不起作用。以下是代码片段: File file = new File(basePath, fileName); int currentColNum=0, currentRowNum=0; OPCPackage pkg = null; Workbook wb = null; if(file.exists()) pkg = OPCPackage.open(file); wb = ne

我正在尝试使用
apachepoi
OPCPackage
编辑excel文件,但由于一些奇怪的原因,它对我不起作用。以下是代码片段:

File file = new File(basePath, fileName);
int currentColNum=0, currentRowNum=0;
OPCPackage pkg = null;
Workbook wb = null;
if(file.exists())
    pkg = OPCPackage.open(file);
    wb = new XSSFWorkbook(pkg);
else
    wb = new XSSFWorkbook();
Sheet sheet = wb.getSheet(sheetName);
if(sheet==null)
    sheet = wb.createSheet(sheetName);
else
    currentRowNum = lastWrittenRowCol.get(sheetName).getLeft();
for(Entry<?,?> entry : map.entrySet()) {
    //some code. This code uses functions like sheet.createRow() etc.
}
FileOutputStream out = new FileOutputStream(file);
System.out.println("before write.out");  //Printed/
wb.write(out);
System.out.println("last statement");   //Not printed.
    out.close();
if(pkg!=null)
        pkg.close();
这是日志中的内存信息:

/proc/meminfo:
MemTotal:      5855708 kB
MemFree:       1413996 kB
Buffers:        815896 kB
Cached:        1939120 kB
SwapCached:          0 kB
Active:        2339452 kB
Inactive:      1512396 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:      5855708 kB
LowFree:       1413872 kB
SwapTotal:     5140792 kB
SwapFree:      5140792 kB
Dirty:            5556 kB
Writeback:           0 kB
AnonPages:     1096860 kB
Mapped:         112944 kB
Slab:           520072 kB
PageTables:      39008 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   8068644 kB
Committed_AS:  2106544 kB
VmallocTotal: 34359738367 kB
VmallocUsed:     51844 kB
VmallocChunk: 34359686179 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

我正在使用Eclipse。程序使用参数
-Xms512m-Xmx2048m
运行。wb.write(out)有一些问题,因为该行之前的语句已打印,但下一行未打印。(我知道我应该使用调试器,但我不知道如何从构建系统将其插入eclipse中)。感谢您的帮助

当XSSF操纵开放XML格式时,编写它需要操纵存档(zip)。。jzlib中有bug

请检查此修复


我希望这能有所帮助

+1我最近也观察到了同样的情况。写入方法出错,并损坏了我的excel文件。@Sankumarsingh是的。我在这件事上浪费了太多时间。希望有人能帮上忙。纯Java代码不应该使JVM崩溃,所以看起来您遇到了JVM错误。你试过向Oracle报告吗?@Gagravarr没有。我不知道这可能是一个bug。@Gagravarr:我观察到在
opcpackage
workbook factory
的情况下,崩溃发生了,而在
fileInputStream
的情况下,崩溃工作正常。我在我的代码和Aman的代码中都观察到了同样的情况。我不知道为什么会这样。
/proc/meminfo:
MemTotal:      5855708 kB
MemFree:       1413996 kB
Buffers:        815896 kB
Cached:        1939120 kB
SwapCached:          0 kB
Active:        2339452 kB
Inactive:      1512396 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:      5855708 kB
LowFree:       1413872 kB
SwapTotal:     5140792 kB
SwapFree:      5140792 kB
Dirty:            5556 kB
Writeback:           0 kB
AnonPages:     1096860 kB
Mapped:         112944 kB
Slab:           520072 kB
PageTables:      39008 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   8068644 kB
Committed_AS:  2106544 kB
VmallocTotal: 34359738367 kB
VmallocUsed:     51844 kB
VmallocChunk: 34359686179 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB