反序列化对象 - 类已更改

时间:2012-03-19 19:44:47

标签: java android serialization

我过去没有使用serialUID序列化了一个对象数组,但在此期间我改变了类 - 我添加了一个布尔值。 现在我无法恢复对象。 我试图重新创建旧类(来自svn)并删除了关于“no serial uid”的警告,以便获取从Eclipse生成的serialUID。我尝试将其粘贴到我的新版本的类中,但它仍然失败。我不确定这是否是因为删除警告会更改生成的serialUID。 接下来我尝试使用“serialver”工具,但我不断收到“找不到类”错误。

有人可以为我拼出我应该在命令行中输入的内容,因为我不完全确定在类路径中输入什么内容? 我用它作为我的模板: serialver -classpath C:\ foo \ classes.jar com.bar.FooMessage 我的工作区是D:\ blabla \ androidworkspace 项目是在eclipse中显示,它说: Shows-src-xyz-show.java 我从C:\ Program Files(x86)\ Java \ jdk1.6.0_24 \ bin

运行命令

3 个答案:

答案 0 :(得分:0)

以下是序列化如何工作的良好解释http://www.javaworld.com/community/node/2915

你需要做的是:

  • 获取序列化字节并分析它们, 这些字节包含您的原始类序列号,
  • 然后你应该为你的代码设置序列号并编译 比如static final serialVersionUID =;

  • 答案 1 :(得分:0)

    在原始.class文件上运行serialver实用程序。这将告诉你它的计算serialVersionUID。然后编辑新源以声明它。

    答案 2 :(得分:0)

    我在这里找到了一个例子http://rchandratech.blogspot.com/2015/05/using-serialver-jdk-command.html

    尝试在Eclipse中,从命令行到项目文件所在的项目/ bin,然后是serialver -classpath" ./" com.xxx.xxx。