Linux下java war文件中的异常解压缩

时间:2018-05-14 07:14:17

标签: java zip zip4j

在java应用程序中解压缩zip文件时遇到问题。它是一个打包为war文件并在jetty 9.4下运行的Web服务。 这是我的(缩短的)堆栈跟踪

2018-05-10 20:13:48,180 ERROR [ProductPublisherHelper:63] net.lingala.zip4j.exception.ZipException: net.lingala.zip4j.exception.ZipException: compression type not supported
net.lingala.zip4j.exception.ZipException: net.lingala.zip4j.exception.ZipException: net.lingala.zip4j.exception.ZipException: compression type not supported
        at net.lingala.zip4j.unzip.Unzip.initExtractFile(Unzip.java:163)
        at net.lingala.zip4j.unzip.Unzip.initExtractAll(Unzip.java:83)

我的服务器在Ubuntu 16.04下运行。 这段代码一直运作到现在。它只是这一个无法解压缩的文件。同时,相同的代码在Windows上相同的条件(jetty,war,同一文件解压缩)下工作得非常好......

该文件很大> 1GB压缩TIF文件,除此之外,我认为它不是什么特别的东西。在我的设置中有什么我应该检查哪些可以解释为什么它在Linux下失败但在Windows下运行? JDK在Windows中为1.8.0_101,在Linux下为1.8.0_171。

1 个答案:

答案 0 :(得分:-1)

您使用的外部库可能存在问题。对于我的项目,我使用内置的ZipInputStream

创建InputStream:ZipInputStream zis = new ZipInputStream(Files.newInputStream(inputPath))

浏览.zip中的文件:ZipEntry ze = zis.getNextEntry();

将zip输入复制到新文件:

try (OutputStream output = Files.newOutputStream(newFile)) { IOUtils.copy(zis, output); }

来自org.apache.commons.io

的IOUtils