获取java.io.InvalidClassException:本地类不兼容:甚至与serialVersionUID不兼



开发人员在实现Serializable接口的类中声明了这一点。

XmlAccessorType(XmlAccessType.FIELD)
@XmlType(namespace = "http://employer.webservicedto.dto.com", name = employerRequestDTO")
public class EmployerRequestDTO implements Serializable{
private static final long serialVersionUID = -3956940714175091216L;
// all private instance variables with getters & setters
}

stacktrace说-

decodeRequestData-decodeReqData()中出现异常:java.io.InvalidClassException:雇主需求DTO;地方的类不兼容:流classdesc serialVersionUID=-3551130751187195282,本地类serialVersionUID=-3956940714175091216

/**
* This method de-serializes user's request-data to return respective DTOs
*/
public static Object decodeRequestData(String requestData, String userType){
Object userRequestDTO = null;
try{    
byte[] b = Base64.decode(requestData);
ByteArrayInputStream bi = new ByteArrayInputStream(b);
ObjectInputStream si = new ObjectInputStream(bi);

看起来该类是在serialVersionUID值设置为-3551130751187195282的情况下序列化的,然后在源中更新该类,serialVersionUID设置为-3956940714175091216。因此,现在类的源代码与序列化的版本不兼容。您可以尝试将serialVersionUID设置回-3551130751187195282,但我会小心的。试着找出这个值被更改的原因——也许类源中还有其他更改,这使得它无法与以前的序列化版本一起使用。

最新更新