【发布时间】:2012-08-23 16:07:02
【问题描述】:
我有问题。当我通过 IntelliJ 运行当前代码时,它可以正常工作, 但是当我在 maven 3 中运行它时它会失败并出现异常。
public static boolean isZipContent(InputStream inputstream) throws IOException {
BufferedInputStream bis = new BufferedInputStream(inputstream);
ZipInputStream zis = new ZipInputStream(bis);
ZipEntry ze = zis.getNextEntry();
if (ze == null) {
return false;
}
zis.closeEntry();
zis.close();
bis.close();
return true;
}
例外:
java.util.zip.ZipException:无效的文字/长度设置 在 java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164) ~[na:1.7.0_06] 在 java.util.zip.ZipInputStream.read(ZipInputStream.java:193) ~[na:1.7.0_06] 在 java.util.zip.ZipInputStream.closeEntry(ZipInputStream.java:139) ~[na:1.7.0_06]当我使用 WinZip 或其他方式手动打开 Zip 文件时,它们看起来还不错 - 正如我所说,一切都在 IntelliJ 中完美运行。
我已经调试并检查了文件编码、类加载器和一切,一切看起来都一样,但如果我使用 Maven3 运行测试,代码仍然会始终失败,但在 IntelliJ 中可以工作。
在 zis.closeEntry() 上失败;有一个例外。 我已确保在调试期间流仍处于打开状态。
我在 Win7 上使用 Java 1.6。 Maven 3.0.4。我尝试了其他版本的 Java,结果相同。
有人知道发生了什么吗?
【问题讨论】:
-
您在这两种情况下使用的是同一个 zip 文件吗?你是如何创建它的?如果您没有使用 WinZip 创建它,请尝试使用 WinZip 创建一个 zip 文件并使用该 zip 文件。 WinZip 会尽可能地更正 zip 文件,因此您可以使用 WinZip 查看 zip 并不能保证它是一个好的 zip 文件。
-
是的,它是同一个 zip 文件。它是由某个程序创建的。请注意,这在 IntelliJ 中运行时有效,因此 zip 文件可能不是问题...