反序列化失败 - oauth2: SerializationException Cannot deserialize ; JdkSerializationRedisSerializer

反序列化失败SerializationException: Cannot deserialize; nested exception is

1.报错信息

ERROR com.lanwon.publics.main.common.auth.Auth2ResponseExceptionTranslator -oauth2:
org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload.Is the byte array a result of corresponding serialization for DefaultDeserializer?; nested exception is java.io.InvalidClassException: com.***.publics.main.common.auth.sms.SmsAuthenticationToken;local class incompatible:stream classdesc serialVersionUID = 485756941561672698, local class serialVersionUID = -1 
  at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.deserialize(JdkSerializationRedisSerializer.java:84)

2.问题原因

从报错信息中可以看出:

  • SerializationException(序列化异常)指示无法进行反序列化。
  • SerializationFailedException(序列化失败异常)表明反序列化负载失败。
  • InvalidClassException(无效类异常)表示存在不兼容的类版本。

更具体地说,问题出现在反序列化 com.***.publics.main.common.auth.sms.SmsAuthenticationToken 类时。该类的版本与序列化时的版本不兼容。序列化时的流版本的 serialVersionUID 值为 485756941561672698,而本地类的版本为 -1

3.解决方案

解决此问题的方法可能包括:

  • 确保在进行序列化和反序列化时使用相同版本的类。
  • 根据报错信息中提供的 SmsAuthenticationToken 类的详细信息,检查该类是否被修改过,并且在序列化和反序列化之间保持一致性。
  • 如果有必要的话,尝试手动指定 serialVersionUID 的值以匹配序列化时的版本。

4.修复问题

  1. 出现该问题是在SmsAuthenticationToken类中新增了字段。

  2. 因为我这边是同一个java服务进行序列化和反序列化。所以不存在上述的三个可能方案。

  3. 尝试手动指定 serialVersionUID 的值确定不是该问题导致。

  4. 回头仔细看日志,注意到这一段org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.deserialize(JdkSerializationRedisSerializer.java:84)

Oauth使用的是redis进行序列化和反序列化,因此考虑是redis缓存。清空了redis缓存数据,问题解决。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值