问题

将jar中的class文件替换后,运行时报错:

2020-07-27 10:06:08,580 ERROR [main] org.apache.ibatis.io.ResolverUtil - Could not read package: com.database.entity
java.util.zip.ZipException: invalid entry size (expected 125 but got 4665 bytes)
	at java.util.zip.ZipInputStream.readEnd(ZipInputStream.java:403)
	at java.util.zip.ZipInputStream.read(ZipInputStream.java:195)
	at java.util.jar.JarInputStream.read(JarInputStream.java:207)
	at java.util.zip.ZipInputStream.closeEntry(ZipInputStream.java:139)
	at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:117)
	at java.util.jar.JarInputStream.getNextEntry(JarInputStream.java:142)
	at java.util.jar.JarInputStream.getNextJarEntry(JarInputStream.java:179)

排查思路:

1、本地可以正常运行,说明替换的class文件没有问题。
2、报错信息:expected 125 but got 4665 bytes,说明在jar中,大小为125bytes的文件解压发生错误,在jar中查找这个文件(META-INF/maven/pom.properties)。
3、将jar用解压工具进行解压,也进行了报错。
4、删除问题文件,用新生成的文件进行替换。

结论

根本原因:jar包有问题,如果是开源包重新下载及可,如果是自己生成的,重新生成一下。

未解决的问题

这个jar在以前有问题的情况下,它竟然可以正常工作,在我替换一个不相关的class文件后报错,原因不明。。。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐