Java:序列化/反序列化因“ClassNotFoundException”而失败

时间:2014-07-01 21:32:17

标签: java serialization deserialization serialversionuid

我有一个Pilot类,以及该类的一个实例:bobThePilot

我将bobThePilot序列化为String并将其复制到我的硬盘上。然后我创建一个新项目并重新创建Pilot类(与之前完全相同)....

然后我通过反序列化从磁盘中获取的String来在这个新项目中创建newBobThePilot。但它失败了。每个人都说这是因为名为serialVersionUID的东西。

是否可以这样做(在不同的类中序列化和反序列化(尽管完全相同的类)?如果是这样,怎么做?

感谢。

道德:

    
        
  1. 将serialVersionUID属性添加到我们的序列化类示例:
        private static final long serialVersionUID = 1L;
  2.     
  3. implements serializable到与序列化类相关的所有类
  4.     

2 个答案:

答案 0 :(得分:0)

如果您没有输入序列版本ID,序列化运行时将根据类的各个方面计算该类的默认serialVersionUID值。即使类是相同的,JDK的不同版本也可以创建不同的serialversionuids。

答案 1 :(得分:0)

  

但它失败了。

失败了怎么办?

  

每个人都说是因为名为serialVersionUID的东西。

除非错误消息如此说明。可能是因为您使用String作为二进制数据容器的原始错误。它不是。只需写出实际的字节,不要通过String往返它们。

  

是否可以这样做(在不同的类中序列化和反序列化

没有