简体   繁体   English

不同的java版本会创建不同的serialVersionUID吗?

[英]Will different java versions create different serialVersionUID?

I have updated my java version from 1.6 to 1.8. 我已经将我的java版本从1.6更新到1.8。 When I try to deploy my project in weblogic (12c), I am getting below error. 当我尝试在weblogic(12c)中部署我的项目时,我遇到了错误。

java.io.InvalidClassException: org.springframework.beans.PropertyAccessException; java.io.InvalidClassException:org.springframework.beans.PropertyAccessException; local class incompatible: stream classdesc serialVersionUID = -5171479712008793097, local class serialVersionUID = 736080306599024264 本地类不兼容:stream classdesc serialVersionUID = -5171479712008793097,本地类serialVersionUID = 736080306599024264

Do I need to re generate serialVersionUID , which created using java version 1.6 ? 我是否需要重新生成使用java 1.6版创建的serialVersionUID?

Please help 请帮忙

Thanks, 谢谢,

Raj 拉吉

Yes, the compiler version matters. 是的,编译器版本很重要。 The Serializable Javadoc says (in part) Serializable Javadoc说(部分)

If a serializable class does not explicitly declare a serialVersionUID, then the serialization runtime will calculate a default serialVersionUID value for that class based on various aspects of the class, as described in the Java(TM) Object Serialization Specification. 如果可序列化类未显式声明serialVersionUID,则序列化运行时将基于类的各个方面计算该类的默认serialVersionUID值,如Java(TM)对象序列化规范中所述。 However, it is strongly recommended that all serializable classes explicitly declare serialVersionUID values, since the default serialVersionUID computation is highly sensitive to class details that may vary depending on compiler implementations, and can thus result in unexpected InvalidClassExceptions during deserialization. 但是, 强烈建议所有可序列化类显式声明serialVersionUID值,因为默认的serialVersionUID计算对类细节高度敏感,这些细节可能因编译器实现而异,因此在反序列化期间可能导致意外的InvalidClassExceptions

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM