• 需要序列化的类中没有写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界面生成的,是一样的。 

  • 相关阅读:
    Winform开发框架之终极应用 伍华聪 博客园
    DZ外部调用登陆
    利用服务定时执行
    winForm写cookie经过
    正则第一天
    NHibernate
    Databases supported by NHibernate
    定时执行
    NHibernate视频教程
    bernate异常及处理方法
  • 原文地址:https://www.cnblogs.com/jifeng/p/6783677.html
Copyright © 2020-2023  润新知