Java序列化报错serialVersionUID不一致
反序列化報(bào)錯(cuò):java.io.InvalidClassException:?com.*.*;???local?class?incompatible:?stream?classdesc?serialVersionUID?=?5590259895198052390,?local?class?serialVersionUID?=?7673969121092229700??
因?yàn)?Java 的序列化機(jī)制是通過在運(yùn)行時(shí)判斷類的serialVersionUID來(lái)驗(yàn)證版本一致性的。在進(jìn)行反序列化時(shí),JVM 會(huì)把傳來(lái)的字節(jié)流中的serialVersionUID與本地相應(yīng)實(shí)體(類)的serialVersionUID進(jìn)行比較,如果相同就認(rèn)為是一致的,可以進(jìn)行反序列化,否則就會(huì)出現(xiàn)序列化版本不一致的異常。
?
一般來(lái)說(shuō),定義serialVersionUID的方式有兩種,分別為:
?
采用默認(rèn)的1L,具體為private static final long serialVersionUID = 1L;
根據(jù)類名、接口名、成員方法及屬性等來(lái)生成一個(gè)64位的哈希字段,例如 private static final long serialVersionUID = XXXL;
總結(jié)
以上是生活随笔為你收集整理的Java序列化报错serialVersionUID不一致的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 洛谷p2234/BZOJ1588 [HN
- 下一篇: java美元兑换,(Java实现) 美元