use*_*749 5 java serialization deserialization kryo
我有一个使用kryo-shaded 4.0.1序列化的Java类
类定义:
class A{
private int c1;
private Map<Integer, String> c2;
}
Run Code Online (Sandbox Code Playgroud)
序列化后我反序列化的很好,但是如果序列化后使用现有的定义,然后添加新字段作为
class A{
private int c1;
private Map<Integer, String> c2;
private Map<Integer, String> c3;
}
Run Code Online (Sandbox Code Playgroud)
然后尝试反序列化它抛出的现有序列化内容(使用旧定义序列化)
com.esotericsoftware.kryo.KryoException: Buffer underflow.
Serialization trace:
....
at com.esotericsoftware.kryo.io.Input.require(Input.java:199)
at com.esotericsoftware.kryo.io.Input.readVarInt(Input.java:373)
at com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClassResolver.java:127)
at com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:693)
at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:118)
at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:543)
at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:709)
Run Code Online (Sandbox Code Playgroud)
我的代码在使用Kryopool时是线程安全的。kryo不支持架构演变。
| 归档时间: |
|
| 查看次数: |
481 次 |
| 最近记录: |