gpt4 book ai didi

java - SerialVersionUID 异常

转载 作者:行者123 更新时间:2023-12-01 18:32:14 27 4
gpt4 key购买 nike

我目前正在编写一个项目,其中有一个可序列化的类 ClientRepository。该类不指定任何se​​rialVersionUID。当我尝试运行我的程序时,出现以下异常:

Exception in thread "main" java.io.InvalidClassException: ClientRepository; local class incompatible: stream classdesc serialVersionUID = -477189107700903771, local class serialVersionUID = -3576242897222506440

所以我添加了默认的serialVersionUID(1L),但现在我得到了

Exception in thread "main" java.io.InvalidClassException: ClientRepository; local class incompatible: stream classdesc serialVersionUID = -477189107700903771, local class serialVersionUID = 1

如何将“stream classdesc serialVersionUID”更改为1L,这样就不会冲突?

谢谢!

最佳答案

不要尝试更改数据 - 相反,如果您确定您的类仍然与旧版本兼容(并且如果只有一个版本具有数据),将声明的 serialVersionUID 更改为 -477189107700903771L 以匹配数据中的值。该值是任意的 - 它只需与数据中的内容匹配即可。

当然,如果您的类以不兼容的方式发生了更改,您将需要编写一些自定义序列化代码。

就我个人而言,正是由于这些脆弱性原因,我尝试避免像这样的 native 二进制序列化。您可能希望查看替代方案,例如 Protocol Buffers .

关于java - SerialVersionUID 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23695116/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com