【发布时间】:2023-03-19 21:46:01
【问题描述】:
我在这里问这个问题是因为谷歌搜索这个错误只会让我在编写 zip 文件时遇到问题,而我只是想阅读它。
我有一个单元测试,我正在尝试测试以下生产代码:
Map<String, String> zipProps = new HashMap<>();
URI zipUri = URI.create("jar:file:" + itemZipPath.toString());
try (FileSystem zipfiles = FileSystems.newFileSystem(zipUri, zipProps)) {
// do stuff...
} catch (IOException e) {
// log an error
}
但是这在包含 try 的行上失败了:
java.util.zip.ZipError: zip END header not found
at com.sun.nio.zipfs.ZipFileSystem.zerror(ZipFileSystem.java:1605)
at com.sun.nio.zipfs.ZipFileSystem.findEND(ZipFileSystem.java:1021)
at com.sun.nio.zipfs.ZipFileSystem.initCEN(ZipFileSystem.java:1030)
at com.sun.nio.zipfs.ZipFileSystem.<init>(ZipFileSystem.java:130)
at com.sun.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:117)
at java.nio.file.FileSystems.newFileSystem(FileSystems.java:326)
at java.nio.file.FileSystems.newFileSystem(FileSystems.java:276)
at com.company.PageCommandHandler$ProvisioningSteps.getItemModel(PageCommandHandler.java:105)
我尝试使用 OSX 的 zip 实用程序和 jar cvf 创建 zip 文件,但都失败了(file <filename> 的输出略有不同)。
我能找到的有关此错误的所有信息都与使用 Java NIO 创建 zipfile 相关,但正如您所见,我只是在进行读取(现在验证 ZIP 中是否存在某个文件)。
对这里出了什么问题有任何想法吗?
【问题讨论】: