`

java.io.InvalidClassException:local class incompatible: stream classdesc serialV

 
阅读更多

local class incompatible: stream classdesc serialVersionUID = 1, local class serialVersionUID = 2427389723552147596

该错产生来自三个原因:

1.没有指定值:BEAN没有指定序列化值即由JDK给出,客户、服务端使用了不同版本的JDK。

=》解决:要使用相同JDK

2.没有指定值:某个类在与之对应的对象已经序列化出去后做了修改,而这个属性值由JVM根据类的相关信息计算,而修改后的类的计算结果与修改前的类的计算结果往往不同,从而造成对象的反序列化因为类版本不兼容而失败。

=》解决:要同时重启应用升级

3.指定值了:客户端BEAN和服务端的BEAN里面序列化值不同。

=》解决:最好指定,在JDK中,可以利用JDK的bin目录下的serialver.exe工具产生这个serialVersionUID,对于Test.class,执行命令:serialver Test。

 

 

 

《谈原型模式还有JAVA克隆还有Transient》时用到对象流,能够被写进对象流的的类都必须标记一个接口序列化。
用eclipse的话,会看到一个编译警告:

The serializable class xxx does not declare a static final serialVersionUID field of type long

 

那么这个变量是干啥的呢?
serialVersionUID是一个用来版本控制的UID。具体可以参考这篇文章《Understand the serialVersionUID》和相关的JSL

这篇随笔为该文章的阅读笔记。

要测试serialversionUID的版本控制功能,很简单。写三个类:

一个序列化类。

一个写对象流的类。

一个读对象流的类。

当被读取的对象和当前的序列化类的UID不同时会报错。例如:

java.io.InvalidClassException:
local class incompatible: stream classdesc serialVersionUID = 1, local class serialVersionUID = 2427389723552147596

 如果不给定一个UID,JVM会自动生成一个。例如上面的错误是产生于下面两段代码:

public class SerialVersionUUIDTest implements Serializable {
    
private static final long serialVersionUID = 1L;

}
public class SerialVersionUUIDTest implements Serializable {

}


默认自动生成的UID,有什么坏处呢?不同环境JVM对同一个类生成的UID可能会不同,从而产生错误。所以说采用分布式的技术或者把对象保存到数据库时应该要注意

分享到:
评论

相关推荐

    java.io.InvalidClassException local class incompatible 处理方法

    java.io.InvalidClassException local class incompatible 序列化的对象需要ID号,故需要手动指定ID号。

    p29814665_122130_Generic.zip

    29448643 JAVA.IO.INVALIDCLASSEXCEPTION: FILTER STATUS: REJECTED 29671623 CVE-2019-2725 26403575 CVE-2016-7103 29667975 CVE-2019-2824 29726561 CVE-2019-2729 29701537 CVE-2019-2827 1.2 Oracle WebLogic ...

    聊天室java可以实现传送文件功能

    Logger.getLogger(ChatClient.class.getName()).log(Level.SEVERE, null, ex); } try{ Socket sock = new Socket(strServerIp,8000); ObjectOutputStream os = new ObjectOutputStream(sock.getOutputStream())...

    Maven 下载、安装、配置与使用教程

    Maven 下载、安装、配置与使用教程。含maven程序 markdown文本,请使用vscode等代码编辑器查看!!!

    起重机械维护保养工艺通则.docx

    起重机械维护保养工艺通则.docx

    起重机控制部分故障及排除方法表.docx

    起重机控制部分故障及排除方法表.docx

    试验材料留样期限统计表.docx

    试验材料留样期限统计表.docx

    龙门吊纠偏装置安装情况调查表.xlsx

    龙门吊纠偏装置安装情况调查表.xlsx

    基于java 的springboot工程的BBS论坛系统

    基于java 的springboot工程的论坛系统。 内容说明: 技术栈 SpringBoot框架。 Thymeleaf模板引擎。 数据访问层:Mybatis,mybatis generator。 数据库:MySql。 服务器:内置Tomcat。 前端相关:Jquery,Bootstrap,Ajax,Layer等。 前端模板:LayUI_fly社区模板。 文件上传:腾讯云COS对象存储。 短信验证:极光短信。 邮箱验证:腾讯企业邮箱。 富文本编辑器:WangEditor。 OAuth2授权登入(QQ、微博、百度、Github) 验证码:vaptcha 扫码登录 身份验证:JWT 说明: 资源来源于网络分享,仅供学习参考。请勿商用。如有侵权请联系我

    基于Springboot+Vue的校园二手图书交易平台的设计与实现源码+数据库(高分毕设)

    基于Springboot+Vue的校园二手图书交易平台的设计与实现源码+数据库(高分毕设)含有代码注释、使用文档说明,新手也可看懂,毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为毕设、期末大作业使用,该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! 基于Springboot+Vue的校园二手图书交易平台的设计与实现源码+数据库(高分毕设)含有代码注释、使用文档说明,新手也可看懂,毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为毕设、期末大作业使用,该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! 基于Springboot+Vue的校园二手图书交易平台的设计与实现源码+数据库(高分毕设)含有代码注释、使用文档说明,新手也可看懂,毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为毕设、期末大作业使用,该系统功能完善、界面美观、操作简单。

    现行交通规范大全(附下载地址).xlsx

    现行交通规范大全(附下载地址).xlsx

    职业健康安全风险控制计划表(RCP).docx

    职业健康安全风险控制计划表(RCP).docx

    php框架新闻资讯微信小程序源码+项目说明(高分毕设)

    毕业设计php框架新闻资讯微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计php框架新闻资讯微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计php框架新闻资讯微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 项目主要功能: 该项目是一款基于新闻资讯管理的系统,旨在方便用户管理和获取新闻信息。主要功能包括新闻的分类、展示和搜索,设计注重用户体验,确保用户能快速定位所需内容。开发中,结合现有成熟技术并参考源代码,强调系统的易用性和可扩展性,以满足实际的新闻资讯管理需求。

    体育馆智能化系统规划方案.pptx

    体育馆智能化系统规划方案.pptx

    储能系列深度3:中国发电侧储能市场及其商业模式

    储能系列深度3:中国发电侧储能市场及其商业模式

    myBookManager(1).zip

    myBookManager(1).zip

    yolov8剪枝源码+项目说明.zip

    介绍 该存储库利用网络精简方法为YOLOv8提供了一种修剪方法。 它采用YOLOv8 8.1.33版本的代码库来实现这种方法。 为了深入了解基本原理,建议参考题为“通过网络瘦身学习高效卷积网络”的研究论文 该方法旨在通过精简网络来提高YOLOv8的效率和性能,与引用的论文中概述的策略保持一致。

    da_1712514588791..apk.1

    da_1712514588791..apk.1

    博物馆智能化系统的解决方案(37页).pptx

    博物馆智能化系统的解决方案(37页)

    整站程序三雷11种语言建站系统(网络版) v6.0-30tnetwork

    php-[整站程序]三雷11种语言建站系统(网络版) v6.0_30tnetwork

Global site tag (gtag.js) - Google Analytics