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

在哪里可以设置流classdesc SerialVersionUID?

全鸿晖
2023-03-14

我使用的是一个从jar实现Serializable的类,为了确保不会出现编译器相关的问题,我给了它一个serialVersionUID私有静态final long serialVersionUID=123L;

然后我重新创建了jar,但现在当我在新jar中使用类时,它给了我一个例外:

invalidClassException:com.placeiq.piqhash.piqdeviceID;本地类不兼容:stream classdesc serialVersionUID=1568630193381428614,本地类serialVersionUID=123

所以我的问题是:1,什么是流classdesc SerialVersionUID?2、我可以做什么来设置它,使两个serialVersionUID相同?

谢谢!

共有1个答案

施靖
2023-03-14

该类的序列化版本来自某处(流中),其序列版本ID为1568...但是它不能反序列化到您的类版本(本地类),它是123。

你得弄清楚另一个版本是从哪里来的。然后,您需要使用新的jar,并将类的新版本放在任何地方(如果可以的话)。

一些可能的来源:

>

  • 来自其他计算机的网络消息带着该类的序列化实例进入您的程序。(这可能是原始套接字消息、RMI或任何使用Java序列化的东西,而不是映射到该对象的JSON消息或XML消息。)

    另一个程序或您的程序的旧版本将类的实例写入磁盘上的文件(或其他文件系统之外的文件),而您的程序没有检索它。

    您的程序有两个JAR版本--一个是旧版本,一个是新版本--这通常是因为不同的类加载器。(如果您不小心管理某种类型的Java EE容器(包括Tomcat或Jetty)上可用的所有类路径,就可能发生这种情况。)

    这并不是一份详尽无遗的清单。

  •  类似资料:
    • AMH可以设置伪静态吗?在哪里设置啊? AMH可以设置伪静态吗?在哪里设置啊?你可以具体告诉我怎么操作吗? 打开你的ThinkPHP框架项目的route/route.php文件。在哪里打开?

    • 我已将一个包含300K行的CSV文件从GCS上载到BigQuery,并收到以下错误: 在哪里可以找到错误流? 我已经更改了创建表配置以允许4000个错误并且它起作用了,所以它一定是消息中3894行的问题,但是这个错误消息并没有告诉我很多关于哪些行或为什么的信息。 谢谢

    • 问题内容: 我的crontab每小时运行一次。当用户从终端运行作业时,运行它的用户在工作中具有环境变量,但是,显然,crontab在运行时不会被环境变量吸收。 我尝试过将它们放入,但是它们似乎仍然没有被捡起。有谁知道我可以将crontab可以接收的环境变量放在哪里? 问题答案: 在运行命令之前,让’cron’运行一个设置环境的shell脚本。 总是。 〜/ bin / Cron中的脚本都是指向单个

    • 问题内容: 几年前,我在维护的Linux服务器上安装了Apache 2.2x和PHP 5.3.1。我使用.tar.gz并按照指示进行构建(而不是rpm和您拥有什么)。一切都很好。 今天,我需要安装它,它看起来像一个PHP库。我完成了所有步骤以进行安装,并在其中找到ibm_db2.so。 最好的收获是最后一步是配置php.ini,但是我的系统上没有php.ini。恐怖的恐怖。PHP可以正常工作,当然

    • 问题内容: 如何在链接中运行示例? 在哪里可以获得JNLP开发人员包? 问题答案: 换句话说,在您的JDK目录中。

    • 问题内容: 如何配置JSch记录器的级别? 是否可以通过XML配置Log4J? 问题答案: JSch似乎没有使用任何已知的日志记录框架(我使用JSch v0.1.49,但最新版本是v0.1.51)或任何XML配置文件。所以这就是我所做的: 然后在使用JSch之前: 请注意,您可以使用所需的任何日志记录框架类(Log4j,Logback等)来代替and , 您可以在此处获得完整的示例:http :