我遇到 java.util.zip.ZipException: invalid stored block lengths。
堆栈跟踪如下:
Caused by: java.util.zip.ZipException: invalid stored block lengths
at java.util.zip.InflaterInputStream.read(Unknown Source)
at java.io.FilterInputStream.read(Unknown Source)
at java.io.FilterInputStream.read(Unknown Source)
at java.util.Properties$LineReader.readLine(Unknown Source)
at java.util.Properties.load0(Unknown Source)
at java.util.Properties.load(Unknown Source)
当我的项目尝试升级时会发生这种情况。升级逻辑是用新的替换旧的jar文件,JVM还在运行。
有一个jar文件(jarA.jar)包含一个属性文件,属性文件记录了一些完整的类名。这些类名将用于通过反射创建实例。升级逻辑尝试使用 SystemClassLoader.getResourceAsStream() 加载属性文件。
如果 jar 文件(jarA.jar)被替换为新的,并且属性的内容发生了变化,则会发生此异常。似乎 SystemClassLoader 无法正确加载属性。
项目采用java1.4编译,运行在jre1.7上,os为windows。
有谁可以解释为什么 SystemClassLoader 在属性存在时无法加载?我感谢您的帮助。