This page lists the known limitations and problems of Apache Commons Compress™ grouped by the archiving/compression format they apply to.
skip
on the underlying InputStream
which may throw an
IOException
in some stream implementations. One
known case where this happens is when using
System.in
as input. If you encounter an
exception with a message like "Illegal seek" we recommend you
wrap your stream in a SkipShieldingInputStream
from our utils package before passing it to Compress.File
s are supported as input/output,
not streams. Starting with Compress 1.13
SeekableByteChannel
is supported as well.ArchiveStreamFactory
will not auto-detect 7z
archives, starting with 1.8 it will throw a
StreamingNotSupportedException
when reading from
a 7z archive.AssertionError
when read. If you need support
for BCJ filters you must use XZ for Java 1.5 or later.CompressorStreamFactory
is not able to auto-detect
streams using Brotli compression.Versions of Compress prior to 1.4.1 are vulnerable to a possible denial of service attack, see the Security Reports page for details.
We are not aware of any problems.
CompressorStreamFactory
is not able to auto-detect
streams using DEFLATE compression.CompressorStreamFactory
is not able to auto-detect
streams using DEFLATE64 compression.We are not aware of any problems.
JAR archives are special ZIP archives, all limitations of ZIP apply to JAR as well.
ArchiveStreamFactory
cannot tell JAR
archives from ZIP archives and will not auto-detect
JARs.We are not aware of any problems.
TarArchiveInputStream
could
fail to read the full contents of an entry unless the stream
was wrapped in a buffering stream.CompressorStreamFactory
was not able to
auto-detect streams using .Z compression.ZipArchiveInputStream
is limited and may
even return false contents in some cases, use
ZipFile
whenever possible. See the ZIP
documentation page for details. This limitation is a
result of streaming data vs using random access and not a
limitation of Compress' specific implementation.ZipArchiveEntries
read from an archive will
contain non-zero millisecond values when using Java8 rather
than the expected two-second granularity.ZipArchiveInputStream
if it used the STORED
method.ZipArchiveEntry#getLastModifiedDate
uses
ZipEntry#getTime
under the covers which may
return different times for the same archive when using
different versions of Java.ZipFile
and ZipArchiveInputStream
classes. This can be
used to mount a denial of service attack against services
that use Compress' zip package. See the Security Reports page for
details.