Java Kryo奇怪的行为取决于字符串长度

时间:2014-01-14 09:59:28

标签: java serialization deserialization kryo

我正在使用Kryo 2.22库将对象序列化为一个文件(我使用UnsafeInput / Output来提高性能)。

我的对象包含许多字段,包括1个字符串。当这个字符串包含最多约35个字符时,没问题。一旦我将其加倍到~70个字符,从文件反序列化时会出现以下异常:

Exception in thread "main" com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 63
Serialization trace:
handCards (vo.ShortHandVO)
    at com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClassResolver.java:119)

当字符串的长度加倍时,我只是复制了初始内容(即没有引入额外/特殊字符)。

我的第一个猜测是因为它与增加的对象大小有关:我将Kryo缓冲区大小加倍但仍然抛出了异常。

我现在已经失去了几个小时发现问题而且我变得无望了。任何提示/建议都将非常感谢!

非常感谢, 托马斯

更新:我终于找到了问题:我正在序列化一个子类并反序列化父类。没有帮助的是Kryo不一致地抛出异常(在这种情况下,它取决于String的大小)

0 个答案:

没有答案