我从servlet应用程序下载了一个序列化的Java对象。当我尝试用Java代码打开它时,我得到:
java.io.StreamCorruptedException:无效的流标题:2C6D0005
我搜索了互联网,找不到任何代码 2C6D0005 的参考。
是什么导致这种情况?
请注意,我已经使用此servlet应用程序下载了许多其他序列化对象,之前没有看到过这个问题。
答案 0 :(得分:2)
这不是错误代码。它是您认为是序列化数据的文件的前4个字节,但不是。
字节应为AC ED 00 05
,前两个字节为“magic”,00 05
为版本。
请参阅Java Serialization Algorithm Revealed了解文件格式以及其他信息,如果某些内容仍不明确,请参阅The Specification。
编辑:
好吧,因为我必须离开工作,所以我会免除你的悬念。在某个地方,某人没有正确读取字节。如果您清除AC
和ED
的高位,则会得到..... 2C
和6D
。您应该与编写相关代码的人员交谈,然后进行修复。