gpt4 book ai didi

在 java 类中进行某些修改后反序列化对象时出现 java.io.InvalidClassException

转载 作者:行者123 更新时间:2023-12-02 04:01:41 26 4
gpt4 key购买 nike

为什么反序列化失败,但是我已经使用 serialVersionUID = 75264711556228L; 序列化了这个 Container 类;

public class Container implements Serializable {
private static final long serialVersionUID = 75264711556228L;
public boolean isFromLocalCollect=false;
public boolean isFromLocalCollect=false;
public void setFromLocalCollect(boolean isFromLocalCollect) {
this.isFromLocalCollect=isFromLocalCollect;
}
public boolean getFromLocalCollect() {
return this.isFromLocalCollect;
}
}

现在,我在使用名称container.ser进行序列化后,在Container类中又添加了一个setter和getter方法,如下所示:

public class Container implements Serializable {
private static final long serialVersionUID = 75264711556228L;
public boolean isFromLocalCollect=false;
public boolean isFromLocalCollect=false;
public void setFromLocalCollect(boolean isFromLocalCollect) {
this.isFromLocalCollect=isFromLocalCollect;
}
public boolean getFromLocalCollect() {
return this.isFromLocalCollect;
}
public boolean isFromLocalCollect2=false;
public void setFromLocalCollect2(boolean isFromLocalCollect2) {
this.isFromLocalCollect2=isFromLocalCollect2;
}
public boolean getFromLocalCollect2() {
return this.isFromLocalCollect2;
}
}

然后我尝试使用更改的项目名称反序列化对象,但反序列化失败,并且出现错误:

java.io.InvalidClassException: cvb.db.PbDb; local class incompatible: stream classdesc serialVersionUID = -444070985558173412, local class serialVersionUID = 4350771162641935418

最佳答案

当您序列化对象时,您使用的 Container.class 版本与用于反序列化它的 Container.class 版本不同。

您需要始终使用相同的.class以确保序列化反序列化操作能够正常工作。

关于在 java 类中进行某些修改后反序列化对象时出现 java.io.InvalidClassException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34826666/

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