[java bug记录] java.util.zip.ZipException: invalid code lengths set

1. 描述:将代码迁移到maven工程,其中用ZipInputStream读取/src/main/resources下的zip文件时报错:“java.util.zip.ZipException: invalid code lengths set”

代码如下:

ZipInputStream zis = new ZipInputStream(getClass().getResourceAsStream(objectDicFilePath));

zis.getNextEntry();

ObjectInputStream ois = new ObjectInputStream(zis);

2. 原因:maven从resources中读取资源时默认会进行过滤,其中包含了重新编码,因此如果资源文件与maven的编码环境不同时,会导致文件损坏。

3. 解决:

(方案1)在pom.xml中设置filtering为true时则过滤

<filtering>true</filtering>

因此将其置false。

(方案2)或者,将

<encoding>ISO-8859-1</encoding>

改为资源文件的编码格式。

(方案3)把资源文件zip解压后放入resources,我最后这么做的。

posted @ 2016-09-19 14:09  lireagan  阅读(17686)  评论(1编辑  收藏  举报