如何找到序列化Java对象的serialVersionUID?

Mat*_*ord 13 java serialization

我有几个可序列化的类,编译时没有指定serialVersionUID.我现在需要向这些类添加一些数据成员,但希望保留一些已经序列化的对象.

有没有找到这些序列化对象的serialVersionUID,以便我可以在源代码中指定相同的ID?

Tof*_*eer 13

如果您尚未修改代码,则可以运行serialver工具(JDK的一部分)并查看它生成的内容.我相信这会得到你的计算结果seriVersionUID.

这是关于serialver的简短文章.

  • Java对象序列化规范第4.6节解释了在内部类的情况下,如果实现为合成成员生成不同的名称,则serialVersionUID在JVM中可能不兼容.我已经看到这种情况在实践中发生,即使有两个Sun JVM也是如此. (4认同)
  • 确保使用与最初编译代码完全相同的JVM来执行此操作! (2认同)

Var*_*han 6

我通常做的是,我编译代码,尝试运行它,并且引发的异常提到了违规的SVUID,所以我可以在我自己的代码中剪切并粘贴它.原油,但它的工作原理.