Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JVM crashing while writing to XLSX file( POI)

JVM is crashing while trying to write to the .xlsx file. I am using POI(XSSF) for the same. The error location point in code is the write method--> workBook.write(fileOutputStream);

On Console I get..

A fatal error has been detected by the Java Runtime Environment:
  SIGBUS (0x7) at pc=0xb68d77f3, pid=14653, tid=1849355120
  JRE version: 7.0_04-b20
 Java VM: Java HotSpot(TM) Server VM (23.0-b21 mixed mode linux-x86 )
 Problematic frame:
 C  [libzip.so+0x47f3]  newEntry+0x73
 Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
 If you would like to submit a bug report, please visit:
   http://bugreport.sun.com/bugreport/crash.jsp
 The crash happened outside the Java Virtual Machine in native code.
 See problematic frame for where to report the bug.
like image 525
KDjava Avatar asked Dec 20 '22 19:12

KDjava


1 Answers

The solution I've found for this, and I've been looking for a while, is to make sure you don't open your Workbook with the File which you use to open the FileOutputStream to save the Workbook. Instead, use a FileInputStream to open the Workbook.

Something like this will work flawlessly

        File inputFile = new File("Your-Path");
        this.inputStream = new FileInputStream(inputFile);
        this.opc = OPCPackage.open(this.inputStream);
        this.workbook = WorkbookFactory.create(opc);

...

        this.outputStream = new FileOutputStream(inputFile);
        this.workbook.write(this.outputStream);

Don't forget to close every opened stream and the OPCPackage.

like image 200
Jonathan Drapeau Avatar answered Dec 24 '22 03:12

Jonathan Drapeau