当前位置: 首页 > 知识库问答 >
问题:

如何修复同一类中的serialVersionUID不相等异常?

关飞翼
2023-03-14
java.io.InvalidClassException:
com.sungymobile.cache.resource.ResourceCacheLoader$ResourceCache; 
local class incompatible: stream classdesc serialVersionUID = 6381106003702990139, 
local class serialVersionUID = 3777451853403693248

共有1个答案

潘彦
2023-03-14

看起来,您有一个序列化的类,它不提供固定的串行版本参数。你必须提供:

private static final long serialVersionUID = 0L;

类中的任何长值,必须缓存。由于Java可序列化接口的文档:

序列化运行时将一个版本号(称为serialVersionUID)与每个可序列化类关联,该版本号在反序列化期间用于验证序列化对象的发送方和接收方是否为该对象加载了与序列化兼容的类。如果接收方为对象加载的类的SerialVersionId与相应发送方的类的SerialVersionId不同,则反序列化将导致InvalidClassException。可序列化类可以通过声明名为“serialVersionUID”的字段来显式声明自己的serialVersionUID,该字段必须是静态的、最终的且类型为long:

需要使用该值来确定缓存的实例是否与当前类的版本相同。

 类似资料:
  • 问题内容: 我正在尝试将XML发送到服务器并取回XML。有什么办法可以解决/忽略此异常吗? 我知道状态行为空,这会引发此错误。 问题答案: 尝试看看您的服务器实际上返回了什么!它可能不是有效的HTTP响应。您可以使用以下方式将原始的http请求发送到服务器: 响应应类似于:

  • 我有一个带有几个键和值的源JSON,我想取几个目标JSON,并检查它们是否是那个JSON的子集:目标JSON中的所有字段都出现在源JSON中,并保存相同的值。 为了实现这一点,我想在的值部分中放置几个不同类型的值,并在这些值上调用。 图中有几种类型的值,我想接受一些键值对并检查是否 钥匙在地图上 该值与地图中的值相同。 这是我想用Java做的一个例子: 这可能是一个XY问题,但我如何在Rust中做

  • 我正在尝试为我的颤振应用程序编写一个测试。我为其编写测试的函数返回未来,因此我使用wait。 但是,只要使用任何WAIT语句,我就会得到MissingPluginException错误。 我尝试更改依赖项版本,但没有帮助。在GitHub上找不到与此相关的颤振问题或StackOverFlow。 预计工作正常。 获取错误: MissingPluginException(在channel plugins

  • 你好,我是hibernate的新成员,目前我正在尝试做一些实践中的事情。但有一些错误。 我尝试在我的项目中使用hibernate。我阅读了教程,并开始将Hibernate集成到我的java maven项目中。所以首先我添加了下一个依赖项: 下一步是将hibernate.cfg.xml文件添加到src/main/resources目录中。此文件如下所示: 我还创建了类,它类似于: 当我尝试为方法创建

  • 问题内容: 我们可以对变量进行运算而不是期望相同的结果吗? 例如: 情况A: 情况B: 案例A和案例B在功能上是否相同? 问题答案: 类是最终的,因此不能覆盖其equals()。它的equals()方法是从Object继承的,该Object读取 所以是的,对于类或任何不重写的类型,它们是相同的 为了回答您的第二个问题,每个ClassLoader只能加载一个类一次,并且对于给定的完全限定名称,它将始