今天调程序,出现了java.io.InvalidClassException:local class incompatible这个错误。
错误重现:
java.io.InvalidClassException: PublishInfMsg; local class incompatible: stream classdesc serialVersionUID = 1412277949381450533, local class serialVersionUID = -3559189311748262112
原因:本地和远程的类中serialVersionUID 值不一样.
解决方案:
将本地的序列化的类中的版本号(serialVersionUID )改成和远程中一样
从上列异常中可以看出
stream classdesc serialVersionUID = 1412277949381450533, (远程)
local class serialVersionUID = -3559189311748262112 (本地)
所以你只需要吧本地的序列化类里的private static final long serialVersionUID = 改成远程的就行了
没有 private static final long serialVersionUID = 这行代码的加上这行代码。
本文详细介绍了Java序列化版本不一致导致的InvalidClassException问题的原理,通过分析异常信息,指出本地和远程类中serialVersionUID的差异,并提供了解决方案。只需将本地序列化的类中的版本号修改为与远程类中一致即可解决此问题。

6579

被折叠的 条评论
为什么被折叠?



