Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.16.1
-
None
Description
The included 7z archive (with only one file), that is password protected, can be properly decompressed with 7z tool. Yet, getNextEntry() throws "Stream is not in the BZip2 format" exception.
The code is:
private static final byte[] PASSWORD = "iBlm8NTigvru0Jr0".getBytes(); public static void main(String[] args) throws IOException { String fileName = "r:/txt.7z"; SevenZArchiveEntry entry; try (SevenZFile arch = new SevenZFile(new File(fileName), PASSWORD)) { while ((entry = arch.getNextEntry()) != null) { System.out.println(entry.getName()); } }
The same exception is thrown when one uses SevenZFile(SeekableByteChannel, byte[]) constructor. Password seems to be OK, since changing it yields different exception (and it also works in 7z tool).
Full exception is:
Exception in thread "main" java.io.IOException: Stream is not in the BZip2 format at org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.init(BZip2CompressorInputStream.java:252) at org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.<init>(BZip2CompressorInputStream.java:134) at org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream.<init>(BZip2CompressorInputStream.java:112) at org.apache.commons.compress.archivers.sevenz.Coders$BZIP2Decoder.decode(Coders.java:254) at org.apache.commons.compress.archivers.sevenz.Coders.addDecoder(Coders.java:79) at org.apache.commons.compress.archivers.sevenz.SevenZFile.buildDecoderStack(SevenZFile.java:933) at org.apache.commons.compress.archivers.sevenz.SevenZFile.buildDecodingStream(SevenZFile.java:909) at org.apache.commons.compress.archivers.sevenz.SevenZFile.getNextEntry(SevenZFile.java:222) at UnpackTest.main(UnpackTest.java:17)