Hello,
I'm using BaseX in several file conversion projects that involve unpacking a zip file using the Archive module, modifying the files that are found inside with the File module and XSLT module, and creating new zip file(s) using the Archive module again. BaseX is very useful for these kinds of transformations and makes it quick to develop a transformation complete with unit tests.
I'm running in to 2 kinds of problems with certain zip files and getting the following error messages from the Archive module.
1. When attempting to extract certain zip files
archive:extract-to() or archive:entries() produce this error message "Operation failed: only DEFLATED entries can have EXT descriptor."
The zip files that produce this error can be extracted using another program such as 7zip, which might be better at handling variations in the structure of some zip files.
2. When attempting to create a zip file larger than about 2 Gb.
After extracting a zip file larger than about 2 Gb using archive:extract-to (which works), when trying to create a new zip file
file:write-binary($newZip, archive:create-from($tempDir))
produces a stack trace that begins with:
java.lang.ArrayIndexOutOfBoundsException: Maximum array size reached. at org.basex.util.Array.checkCapacity(Array.java:322) at org.basex.util.Array.newCapacity(Array.java:313) at org.basex.util.Array.newCapacity(Array.java:301) at org.basex.io.out.ArrayOutput.write(ArrayOutput.java:32) at java.base/java.io.OutputStream.write(OutputStream.java:157) at java.base/java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.java:253) at java.base/java.util.zip.DeflaterOutputStream.write(DeflaterOutputStream.java:211) at java.base/java.util.zip.ZipOutputStream.write(ZipOutputStream.java:332) at java.base/java.io.FilterOutputStream.write(FilterOutputStream.java:108) at org.basex.query.func.archive.ZIPOut.write(ZIPOut.java:44) at org.basex.query.func.archive.ArchiveCreate.add(ArchiveCreate.java:138)
I'm currently using BaseX version 9.4.1 and Java 64-bit openjdk version "11.0.7" 2020-04-14.
This might be a bug in BaseX handling of zip files. Is there any solution or workaround?
Thanks, Vincent
______________________________________________ Vincent M. Lizzi Head of Information Standards | Taylor & Francis Group 530 Walnut St., Suite 850, Philadelphia, PA 19106 E-Mail: vincent.lizzi@taylorandfrancis.com Phone: 215-606-4221 Web: www.tandfonline.com
Taylor & Francis is a trading name of Informa UK Limited, registered in England under no. 1072954
"Everything should be made as simple as possible, but not simpler."
Information Classification: General