Java: 獲取jar包中某個類的serialVersionUID(序列版本id)
阿新 • • 發佈:2018-11-23
2018.11.02
文章目錄
前言
在《序列化及Java Serializable序列化介面》一文,我介紹了一個case:一個已上線的版本中包含了未定義serialVersionUID序列版本id的類。本文就會講述這類問題上筆者的解決方法,僅供參考。
方法
這個問題的關鍵是,如何保證下一個上線版本能正確地將已儲存的類例項正確反序列化出來。首先JVM是不支援對serialVersionUID
不匹配的例項進行反序列化的,所以我們需要做的就是獲取已上線jar包的A類serialVersionUID
serialVersionUID
與生產環境的保持一致,那麼就能正確地進行序列化和反序列化。
JDK中serialver,就能獲取jar包中某個類的serialVersionUID
1。方法如下:
# Windows環境
> serialver -classpath .\publishedPackage.jar package.ClassName
# package.ClassName private static final long serialVersionUID = -1L
文至最末,其言也善,這種沒有加serialVersionUID
serialVersionUID
的方法請檢視《序列化及Java Serializable序列化介面》。