我从 servlet 应用程序下载了一个序列化的 Java 对象。当我尝试用 Java 代码打开它时,我得到:
java.io.StreamCorruptedException:无效的流标头:2C6D0005
我搜索了互联网,但找不到任何代码参考2C6D0005.
什么可能导致这种情况?
请注意,我已经使用此 servlet 应用程序下载了许多其他序列化对象,并且以前没有遇到过此问题。
这不是错误代码。您认为该文件的前 4 个字节是序列化数据,但事实并非如此。
字节应该是AC ED 00 05
其中前两个字节是“魔法”并且00 05
是版本。
See Java 序列化算法揭秘 http://www.javaworld.com/article/2072752/the-java-serialization-algorithm-revealed.html文件格式以及其他信息,以及规格 http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf如果仍有不清楚的地方。
Edit:
好吧,既然我要下班了,那就不用你担心了。在某个地方,有人没有正确读取字节。如果清除高位AC
and ED
, 你得到.....2C
and 6D
。您应该与编写相关代码的人交谈,然后修复它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)