zoukankan      html  css  js  c++  java
  • 需要序列化的类中没有写serialVersionUID的解决办法

    由于没赋值serialVersionUID 只是警告,不是错误,造成先前没留意设定serialVersionUID,网络两端上线运行一段时间也感觉正常。如果再增减修改field,没赋值好serialVersionUID,网络两端就不匹配。

    解决步骤如下:serialver命令在jdk/bin目录,用于算出某类的serialVersionUID。

    (1)用旧代码的类生成 serialVersionUID: serialver -classpath myjar-1.0.jar com.icegarden.myjar.MyDO

    输出结果类似:com.icegarden.myjar.MyDO: static final long serialVersionUID = 2075130392266935898L;

    (2)然后将这行代码复制到新代码上。

    即是说, 如果要在序列化DO里增加/变化field,又要和旧的没有serialVersionUID的DO作兼容,可以用serialver算出旧DO的serialVersionUID,赋值给变化了的DO,这样两边就匹配了

    其它说明:

    (3)可能会造成两边不匹配的改动,最好是搭车在两端都停机发布时。如果按以上方法做,应该不需出现如此情形。

    (4)如果其它field不变动时,增加由serialver自动生成serialVersionUID并不会造成不匹配的情况。

    (5)相同的代码,用serialver生成的和用eclipse界面生成的,是一样的。 

  • 相关阅读:
    3.Linux系统信息
    2.LINUX常用命令
    1.CMD命令
    8.变量内存CPU原理
    17.I/O系统访问方式和类型
    16.磁盘调度
    15.大容量存储结构
    cluvfy comp命令用法
    禁用DRM
    Oracle数据库升级前必要的准备工作
  • 原文地址:https://www.cnblogs.com/jifeng/p/6783677.html
Copyright © 2011-2022 走看看