问题标签 [serialversionuid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1427 浏览

java - java.io.InvalidClassException:从字符串到对象的序列化失败java

我有一个名为 Doodle 的对象,我将它序列化为一个字符串,就可以了。当我尝试反序列化对象时出现问题,错误是:java.io.InvalidClassException: java.util.ArrayList; 本地类不兼容:stream classdesc serialVersionUID = 8664875232659988799,本地类serialVersionUID = 8683452581122892189

序列化和反序列化的方法如下:

我使用相同的方法(但使用不同的变量)来序列化另一种类型的对象,并且使用该方法可以很好地工作。我不明白哪里有问题!

0 投票
2 回答
730 浏览

java - POJO类中序列版本id的唯一性

还有一个愚蠢的问题。但是想问一下,因为它从过去 1 小时开始让我头晕目眩。

我们都知道 serialVersionUID 是唯一的。什么是独特性水平?它在项目或工作区或服务器中应该是唯一的吗?

如果同一工作区中的两个类具有相同的 serialVersionUID(复制粘贴),它会导致 IllegalClassCasteException 或任何其他异常吗?

如果每个项目/工作区都是唯一的,那么为什么 Eclipse 提供默认的 serialVersionUID (1L)?

0 投票
2 回答
1165 浏览

java - serialVersionUID 异常

我目前正在编写一个项目,其中有一个可序列化的类 ClientRepository。该类不指定任何se​​rialVersionUID。当我尝试运行我的程序时,出现以下异常:

所以我添加了一个默认的serialVersionUID(1L),但现在我得到了

如何将“stream classdesc serialVersionUID”更改为 1L,这样才不会冲突?

谢谢!

0 投票
2 回答
2312 浏览

java - Java:由于“ClassNotFoundException”,序列化/反序列化失败

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

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

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

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

谢谢。

德:

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

0 投票
1 回答
721 浏览

java - 如何为匿名类生成serialVersionUID?

这是我尝试过的:

我使用该选项构建了项目-Xlint:serial,并收到了以下警告:

然后复制匿名类名作为参数serialver

我不打算序列化它,而且我读过不建议序列化匿名类的对象。

1L将其保留为或根本没有定义是更好的做法serialVersionUID吗?

0 投票
2 回答
532 浏览

java - 瞬态和易失性变量与串行版本 uid 之间是否存在任何关系?

实际上我想知道序列化的概念以及瞬态和局部变量与serialversionuid相关的方式以及序列化实际上是如何发生的?

0 投票
1 回答
464 浏览

java - HashMap 1.7 可以序列化,1.6 可以用吗?

我认为这会抛出一个错误,说明次要版本号;但它没有。并且工作正常。谁能指出,为什么这行得通?

我在 java 1.7 上运行的应用程序中创建了一个 hashMap,将其序列化并将其发送到使用 jdk 1.6 的应用程序。接收方应用程序能够毫无错误地获取内容。

0 投票
1 回答
234 浏览

java - getSerialVersionUID 使用什么内容来确定 UID?

所以,我有一个大型项目,在保存配置时会序列化很多东西,并且不得不重新设计其中的大部分内容。由于我已经为很多类定义了 serialVersionUID 字段,我想知道我需要为哪些文件重新计算 UID。

我在 SO 上找不到任何关于在计算 serialVersionUID 时使用类的哪些属性(通过 ObjectStreamClass.lookup(classname) )的帖子。我终于在规范中找到了定义它的位置。因此,为了保存这一小块知识,这更像是那些自我回答的问题之一。

如果这是不礼貌的(因为这是一个规范问题),请告诉我,我很乐意删除它或任何合适的东西。

那么,在使用 Java 内置的计算 serialVersionUID 的算法时,使用了类的哪些细节?

0 投票
2 回答
74 浏览

java - 为什么要考虑方法名称或为 serialversionuid 生成哈希

我在序列化时有一堂课

但是,在反序列化时,我有一个额外的方法(下面提到),它不会以任何方式影响对象状态,而序列化就是存储对象状态,那么为什么额外的方法对 serialversionuid 的哈希生成有贡献。在当前情况下,它将因 InvalidClassException 而失败。但是这个额外的方法并没有改变对象状态。

0 投票
1 回答
204 浏览

java - 以编程方式为 Java 文件添加 SerialVersion Id

我们有数百个通过 Hibernate 工具进行逆向工程的 Java 实体。Entity 类似乎实现了java.io.Serializable接口,但没有serialVersionUID.

我们的任务是添加serialVersionUID 这些文件(最坏的情况,我们必须手动完成)。我们还有其他方法可以做到吗?一个理想的解决方案是在逆向工程步骤本身中执行此操作,但也可以传入包名称并添加serialVersionUID到实体类中。

我们正在使用休眠 3.0