在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。
答案 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