1

在我的 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 上运行得非常好......

该文件是一个大于 1GB 的大型 TIF 压缩文件,除此之外我不认为它有什么特别之处。我的设置中是否有什么我应该检查的东西可以解释为什么它在 Linux 下失败但在 Windows 下工作?JDK 在 Windows 下是 1.8.0_101,在 Linux 下是 1.8.0_171。

4

1 回答 1

-1

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

创建输入流: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

于 2018-05-14T07:34:17.823 回答