gpt4 book ai didi

java - 我在哪里可以设置流 classdesc serialVersionUID?

转载 作者:行者123 更新时间:2023-12-01 13:06:36 27 4
gpt4 key购买 nike

我正在使用一个从 jar 实现 Serializable 的类,为了确保不会出现与编译器相关的问题,我给了它一个 serialVersionUID
private static final long serialVersionUID = 123L;

然后我重新创建了 jar,但是现在当我在新 jar 中使用该类时,它给了我异常:

java.io.InvalidClassException: com.placeiq.piqhash.PIQDeviceId;本地类不兼容:流 classdesc serialVersionUID = 1568630193381428614,本地类 serialVersionUID = 123

所以我的问题是:
1、什么是流classdesc serialVersionUID?
2、怎么设置才能让两个serialVersionUID一致?

谢谢!

最佳答案

该类的序列化版本来自某个地方(在流中),它的序列版本 ID 为 1568……但它无法反序列化为您的类版本(本地类),即 123。

您需要弄清楚其他版本的来源。然后你需要使用你的新 jar,以及新版本的类(如果可以的话)。

一些可能的来源:

  • 来自其他计算机的网络消息与该类的序列化实例一起进入您的程序。 (这可能是原始套接字消息或 RMI 或任何使用 Java 序列化的内容。它不会是映射到该对象的 JSON 消息或 XML 消息。)
  • 另一个程序或您的程序的旧版本将类的一个实例写入磁盘上的文件(或以其他方式使用文件系统),并且您的程序没有检索它。
  • 你的程序有两个版本的 jar——一个旧的和一个新的——它们存在,通常是因为不同的类加载器。 (如果您不小心管理某种 Java EE 容器(包括 Tomcat 或 Jetty)上可用的所有类路径,就会发生这种情况。)

  • 这不是一个详尽的 list 。

    关于java - 我在哪里可以设置流 classdesc serialVersionUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18621398/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com