2016年4月

Java Serializable serialVersionUID问题

前言:项目升级新版本时,保存在SharedPreferences中用户信息丢失了。升级上来调试的时候取不到值,log中也没有看到其它信息,先后查看了上来的文件都是存在的,于是定位到取值的方法上面,进过调试发现我取对象时出现(java.io.InvalidClassException: ...; local class incompatible: stream classdesc serialVersionUID = xxL, local class serialVersionUID = xxxL)异常。

SharedPreferences中保存User 我是以对象的方式保存的。

public void put(String key, Object ser, Cipher cipher) {
        try {
            Log.i(TAG, key + " put: " + ser);
            if(ser == null) {
                this.sp.edit().remove(key).commit();
            } else {
                byte[] e = ByteUtil.objectToByte(ser);
                if(cipher != null) {
                    e = cipher.encrypt(e);
                }

                this.put(key, HexUtil.encodeHexStr(e));
            }
        } catch (Exception var5) {
            var5.printStackTrace();
        }

    }

- 阅读剩余部分 -