几个月前,我将 java.io.Serialized 对象序列化到文件中。现在我需要读取内容,但从那时起,serialVersionUID 已更改,现在我收到“类不兼容”错误。我知道所有数据成员都没有改变,所以唯一的障碍是serialVersionUID 检查。
有没有办法禁用检查或修改二进制文件中的serialVersionUID?
澄清
这个问题假设我无法编辑源代码。有没有办法可以破解 .class 文件或者破解序列化对象文件(使用十六进制编辑器并更改某个偏移处的值)?
最佳答案
作为一种破解,您可以使用serialver工具生成您的jvm可能正在使用的serialVer:
serialver -classpath 无论 com.foo.bar.MyClass
如果您随后在类中手动设置serialVerUID,它应该匹配,并且您应该能够加载,假设您没有以无效的方式更改类。
关于Java - 修改二进制序列化对象的serialVersionUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/444909/