java - SerialVersionUID 为 "private static final long"仍然会出现 InvalidClassException

标签 java serialization

我已经编译并打包了 Java 应用程序中的各个项目,通过 Eclipse 自动为从 Serialized 派生的所有类生成了 serialVersionUID。

我阅读了此问题的答案 question ,并验证了serialVersionUids都是private static final long

尽管如此,当我尝试运行时,我收到了这样的错误:

java.io.InvalidClassException: com.acme.product.Widget;本地类 不兼容:流classdesc serialVersionUID = 5226096973188250357,本地 类serialVersionUID = -5432967318654384362

我错过了什么?

最佳答案

您可能遇到类路径问题,您的程序正在解析该类的较旧的不兼容版本,该版本的serialVersionUID 值不同。

或者正在加载的序列化对象是用该类的其他版本序列化的,但现在不可用。

关于java - SerialVersionUID 为 "private static final long"仍然会出现 InvalidClassException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2725010/

相关文章:

java - 正则表达式忽略 html 标签,但从具有不同结束 anchor 的单词边界开始

Java 类文件在 IntelliJ 项目中运行,但不在项目之外运行

PHP serialize() 未正确序列化 stdClass 对象

wcf - 使用 DataContractSerializer 序列化子类实例的实用方法是什么?

c# - C# 中用于嵌套节点的 XML 序列化

ruby - 如何在 Ruby 中复制散列?

java - 不重新显示图像

java - 在 Openshift 服务器中使用 Rest Web 服务部署 Java 应用程序

java - 为什么使用 DataOutputStream 将消息写入客户端套接字到服务器套接字仅在关闭客户端套接字后发送?

java - 无法反序列化 JSON 响应