在我的 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 下工作? Windows 下的 JDK 为 1.8.0_101,Linux 下的 JDK 为 1.8.0_171。
最佳答案
也许您使用的外部库有问题。对于我的项目,我使用内置的 ZipInputStream
。
创建输入流:ZipInputStream zis = new ZipInputStream(Files.newInputStream(inputPath))
浏览 .zip 中的文件:ZipEntry ze = zis.getNextEntry();
将 zip 中的输入复制到新文件:
try (OutputStream 输出 = Files.newOutputStream(newFile)) {
IOUtils.copy(zis, 输出);
}
来自 org.apache.commons.io 的 IOUtils
关于java - Linux下java war文件解压异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50324855/