【語言】Java: 獲取jar包中某個類的serialVersionUID(序列版本id)

2018.11.02

文章目錄

前言

在《序列化及Java Serializable序列化接口》一文,我介紹了一個case:一個已上線的版本中包含了未定義serialVersionUID序列版本id的類。本文就會講述這類問題上筆者的解決方法,僅供參考。

方法

這個問題的關鍵是,如何保證下一個上線版本能正確地將已存儲的類實例正確反序列化出來。首先JVM是不支持對serialVersionUID不匹配的實例進行反序列化的,所以我們需要做的就是獲取已上線jar包的A類serialVersionUID序列版本id,這樣在後續版本中,只要保證A類的serialVersionUID與生產環境的保持一致,那麼就能正確地進行序列化和反序列化。

JDK中serialver,就能獲取jar包中某個類的serialVersionUID1。方法如下:

# Windows環境
> serialver -classpath .\publishedPackage.jar package.ClassName
# package.ClassName    private static final long serialVersionUID = -1L 

文至最末,其言也善,這種沒有加serialVersionUID情況最好還是別出現,自定義serialVersionUID的方法請查看《序列化及Java Serializable序列化接口》。


  1. How to generate serialVersionUID ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章