java.io.InvalidClassException 序列化与反序列化对象错误(Serializable)

最近遇到了一个问题反序列化错误,以前也实现过序列化接口,但是从来没有报过序列化错误,后来想了一下原因,之前的序列化和反序列化全都是在一个项目中进行的,也就是针对一个项目的对象进行序列化和反序列化。
但是这一次我的项目是一个分布式的服务,使用MQ来传递消息,这时遇到了反序列化的错误。本地的UID和远程的UID不一样:
在这里插入图片描述
怎么样进行序列化和反序列化?

java通过包名,类名,字段名,方法名等来进行序列化并标识它,所以在进行反序列化的时候也是通过包名,类名,字段名,方法名来进行反序列化一旦路径或者是名称不一样了反序列化就会报错,所以,,,

  • 序列化与反序列化的对象必须一模一样(包括路径)。类名一样,同样实现序列化接口Serializable,字段一样,方法一样,包路径也要一样。
  • 对象加上序列化的UID。两个序列化的对象UID要相同(不加也行)。
private static final Long serialVersionUID = 42L; //序列化的UID
  • 治标不治本的方法,不推荐,这样做也会增大开销。把对象转换成Json字符串,然后传递,解析的时候再把Json字符串转换成对象。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白说(๑• . •๑)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值