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,我最后這么做的。