java.util.zip.ZipException: invalid entry CRC (expected 0x0 but got 0xdeadface)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:221)
at java.util.zip.ZipInputStream.closeEntry(ZipInputStream.java:140)
at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:118)
...
12条答案
按热度按时间qybjjes11#
确保您的jar文件没有损坏。如果它已损坏或无法解压缩,则会发生此错误。
dced5bon2#
我也面临同样的问题。我有一个java.util.zip.zipfile无法处理的zip归档文件,但winrar将其解包后就可以了。我在sdn上找到了一篇关于java中压缩和解压缩选项的文章。我稍微修改了一个示例代码,以生成最终能够处理归档的方法。诀窍在于使用zipinputstream而不是zipfile,以及按顺序读取zip归档文件。此方法还能够处理空的zip存档。我相信您可以调整该方法以满足您的需要,因为所有zip类对于.jar归档都有等效的子类。
7rfyedvj3#
它可能与log4j有关。
您是否在websphere java类路径(如启动文件中定义的)和应用程序类路径中都有log4j.jar文件?
如果确实如此,请确保log4j.jar文件位于java类路径中,并且不在webapp的web inf/lib目录中。
它也可以与ant版本相关(可能不是您的情况,但我确实将其放在这里以供参考):
类路径中有一个.class文件(即不是目录或.jar文件)。从Ant1.6开始,ant将打开类路径中的文件,检查清单条目。此尝试打开将失败,错误为“java.util.zip.zipexception”
ant 1.5不存在此问题,因为它不尝试打开文件。-因此,请确保您的类路径不包含.class文件。
另一方面,你考虑分开jar吗?
您可以在主jar的清单中,使用以下属性引用其他jar:
然后,将所有jar放在同一个文件夹中。
同样,可能对您的情况无效,但仍有参考价值。
ryhaxcpt4#
我以前见过这样的异常情况,jvm认为是临时目录的任何东西由于不在那里或没有写入权限而无法访问。
uqcuzwp85#
我通过清除jboss-x.y.z/server[config]/tmp和jboss-x.y.z/server/[config]/work目录解决了这个问题。
qlfbtfca6#
我在java 6的一个特定zip文件中看到了这一点,但当我升级到java 8(没有测试java 7)时,它就消失了,因此java中zipfile的新版本似乎支持更多的压缩算法,因此可以读取早期版本失败的文件。
blmhpbnm7#
利基巴斯帮我犯了这个错误。我在调试并观看liquibase尝试加载库之后解决了这个问题,发现commons-codec-1.6.jar的清单文件中出现了错误。基本上,路径中的某个地方存在损坏的zip文件,或者正在使用不兼容的版本。当我为这个库在maven存储库上进行探索时,我发现有更新的版本,并将更新的版本添加到pom.xml中。我能够在这一点上继续进行。
zujrkrfu8#
我遇到了一个例外
在java中解压缩存档时。当7zip(和其他人)在没有任何问题或关于无效crc的投诉的情况下打开档案时,档案本身似乎没有损坏。
我切换到ApacheCommonsCompress来读取zip条目,这就解决了问题。
qmb5sa229#
为了克服zipexception的缺点,我使用了一个 Package 器
commons-compress
1.14致电jarchivelib
由thrau编写,可以轻松地从文件对象中提取或压缩到文件对象中。例子:
maven dependency«您可以从位于org/rauschig/jarchivelib/的sonatype maven存储库下载JAR。
@看
架桥机和压缩机
使用JavaAPI压缩和解压缩数据
6qqygrtg10#
在windows7上,对于大于80MB的Java8JAR文件,我通过samba网络连接遇到了这个问题。将文件复制到本地驱动器修复了该问题。
suzh9iv811#
就我而言,我的
-Dloader.path="lib"
包含其他不需要的jar。例如mvn dependency:copy-dependencies
列出100个jar文件。但是我的lib
目录包含101个jar文件。fjaof16o12#
在我的例子中,多个版本的sl4j-api.jar在maven repo中是冲突的。然后我删除了m2 maven repo中的整个sl4j api文件夹,并更新了maven项目,构建了maven项目,然后在jboss服务器中运行了该项目。问题解决了。