无论eclipse还是idea(默认关闭序列化提示,需手动打开),都可以自动生成相应的序列号,分为两类1L,XXXL。

当然如果不指定,系统也会自动生成,但是存在隐性风险 ,不同的编译器对同一个对象可能生成相同的序列号,也可能生成不同的序列号

java serialVersionUID在运行时基于该类的各个方面计算该类的默认 serialVersionUID 值,记住是运行时,所以哪怕是引用相同的jar包,最后的序列号也可能相同可能不同。

对象的序列化与反序列化最好显示指定。

在指定序列化值后,即使在后来的对象中添加了字段(没有删除与修改),序列化值是此前的,只要保证反序列化对象和最新的保持一致均能正常反序列化。

原因:

没有默认serialVersionUID ,在生成环境反序列化失败,但是测试环境无论怎样都不会有问题,引用了 相同的jar包,但是serialVersionUID 不是在编译时指定,而是在运行时根据该类生成,所以即使引用相同的  jar包最后的 序列号也可能不一样

在生成环境遇见以下错误

java.lang.IllegalArgumentException: Failed to deserialize object
at org.springframework.util.SerializationUtils.deserialize(SerializationUtils.java:)
at com.sf.ccsp.inter.redis.RedisTemplate.getSerialization(RedisTemplate.java:)
at com.sf.ccsp.inter.service.PLDKafkaMessageService.getCityName(PLDKafkaMessageService.java:)
at com.sf.ccsp.inter.service.PLDKafkaMessageService.coverToWaybillTO(PLDKafkaMessageService.java:)
at com.sf.ccsp.inter.service.PLDKafkaMessageService.handle(PLDKafkaMessageService.java:)
at com.sf.ccsp.inter.listener.FvpPldListener.onMessage(FvpPldListener.java:)
at com.sf.kafka.api.consume.KafkaConsumer$ConsumeTask.run(KafkaConsumer.java:)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:)
at java.util.concurrent.FutureTask.run(FutureTask.java:)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:)
at java.lang.Thread.run(Thread.java:)
Caused by: java.io.InvalidClassException: com.sf.ccsp.basic.client.response.AddressResp; local class incompatible: stream c
lassdesc serialVersionUID = , local class serialVersionUID = -
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:)
at org.springframework.util.SerializationUtils.deserialize(SerializationUtils.java:)
... more

对象序列化与反序列化local class incompatible的更多相关文章

  1. java 对象序列化与反序列化

    Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化  Java序列化是指把Java对象转换为 ...

  2. C#对象序列化与反序列化zz

      C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍........................ ...

  3. C#对象序列化与反序列化

    C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍.......................... ...

  4. Java Io 对象序列化和反序列化

    Java 支持将任何对象进行序列化操作,序列化后的对象文件便可通过流进行网络传输. 1.      对象序列化就是将对象转换成字节序列,反之叫对象的反序列化 2.      序列化流ObjectOut ...

  5. Java对象序列化与反序列化一 JSON

    Java对象序列化与反序列化一 JSON 1. 依赖库 jackson-all-1.6.1.jar 2. 代码 public class Student {    private String nam ...

  6. Java之对象序列化和反序列化

    一.对象序列化和反序列化存在的意义: 当你创建对象,只要你需要,他就一直存在,但当程序结束,对象就会消失,但是存在某种情况,如何让程序在不允许的状态,仍然保持该对象的信息.并在下次程序运行的时候使用该 ...

  7. Java 序列化 对象序列化和反序列化

    Java 序列化 对象序列化和反序列化 @author ixenos 对象序列化是什么 1.对象序列化就是把一个对象的状态转化成一个字节流. 我们可以把这样的字节流存储为一个文件,作为对这个对象的复制 ...

  8. Java对象序列化和反序列化的工具方法

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  9. python第四十九课——对象序列化与反序列化

    person.py class Person: def __init__(self,*args,**kwargs): print('我是Person类的构造...') # self.name=name ...

随机推荐

  1. 苹果mac版微软官方远程连接工具下载Microsoft Remote Desktop For Mac

    官网beta版本,不用再到处找包了. ** 点我访问https://rink.hockeyapp.net/apps/5e0c144289a51fca2d3bfa39ce7f2b06/**

  2. node js 读取mysql

    1.新版node自带npm 2.下载npm不需要node命令 3.懒得配环境变量.直接把生成的npm复制到报错目录,再把mysql模块复制回来 var mysql = require('mysql') ...

  3. 第二百一十节,jQuery EasyUI,SearchBox(搜索框)组件

    jQuery EasyUI,SearchBox(搜索框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 SearchBox(搜索框)组件的使用方法,这个组 ...

  4. C++学习之拷贝构造函数篇

    一.拷贝构造函数的声明 Array(const Array & arr); 二.拷贝构造函数的实现分为两种,即是深拷贝和浅拷贝. 1.浅拷贝 代码例如以下: class Array { pub ...

  5. 将Centos的yum源更换为国内的阿里云(163)源

    阿里云是最近新出的一个镜像源.得益于阿里云的高速发展,这么大的需求,肯定会推出自己的镜像源.阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/ CentOS系统更换软 ...

  6. [Hadoop]安装

    1 从官网下载hadoop稳定版 http://www.apache.org/dyn/closer.cgi/hadoop/common/ 2 安装JAVA 参考如下blog http://www.cn ...

  7. src与href的异同

    相同点: 在跨域中,src,href,这些发送的请求都是get请求: 不同点: 1, 概念:href (Hypertext Reference)指定网络资源的位置: 理解:href 用作 " ...

  8. .Net Core 知识了解:一跨平台的奥秘

    学习一下.Net Core 查看了技术大拿的文章 .NET Core跨平台的奥秘[上篇]:历史的枷锁 一下是学习资料 对于计算机从业人员来说,“平台(Platform)”是一个我们司空见惯的词语,在不 ...

  9. windows平台 - 0基础学习node.js(一)

    首先得明白node.js做什么用的: 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Nod ...

  10. JS制作一个通用的商城版历史浏览记录

    正在开发一个b2c的国外商城,昨天做了一个历史浏览记录发出来跟大家分享一下. JS: //cookie相关函数 function getCookieVal(offset) {    var endst ...