java - 反序列化对象 - 类已更改

标签 java android serialization

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

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

最佳答案

这里很好地解释了序列化的工作原理 http://www.javaworld.com/community/node/2915

你需要做的是:

  • 获取序列化字节并分析它们, 这些字节包含您的原始类(class)序列号,
  • 那么你应该为你的代码设置序列号并编译 就像静态最终长serialVersionUID = ;

  • 关于java - 反序列化对象 - 类已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9776800/

    相关文章:

    java - JAXB unmarshaller.unmarshal 何时返回 JAXBElement<MySchemaObject> 或 MySchemaObject?

    java - 使用 CXF 时缺少 SoapAction header

    java - 从文本文件实例化一个类

    Android FirebaseRecyclerAdapter populateViewHolder() 永远不会被调用

    java - 序列化 hibernate 模型及其延迟加载对象

    java - 应用程序从后台重新启动主要 Activity ,而不是恢复之前的状态

    java - ShowCaseView 内存不足错误

    android - 来自 R.drawable 的 +imageResource 在 Jetpack Compose 中导致 IllegalArgumentException

    java - 读取包含对象的文件时,ObjectInputStream 抛出 EOFException

    caching - 如何配置 Spring Redis 配置以使用 Hash 而不是字符串序列化