我正在使用 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 不一致地抛出异常(在这种情况下,它取决于字符串的大小)