Kryo 反序列化失败,并显示“KryoException: Buffer Underflow”

2022-09-03 05:57:31

我使用 Kryo 将对象写入字节数组。它工作正常。但是当字节数组转换为对象时,它会引发异常。com.esotericsoftware.kryo.KryoException: Buffer underflow.

这是我的反序列化:

        Kryo k=new Kryo();
        Input input=new Input(byteArrayOfObject);           
        Object o=k.readObject(input,ObjectClass.class);

此外,始终无法在我的应用程序中定义对象类型。在最后一个过程中,将进行类转换。因此

  • 如何解决上述反序列化错误

  • 有没有办法在不将类放入readObject(...,ClassName)的情况下创建Object?


答案 1

当我没有正确关闭输出/输入类型时,我遇到了这种情况。您需要确保 Kryo 冲洗除执行或 之外的所有内容。output.flush()output.close()

其次,研究.然后,您可以执行并将对象转换为它应该具有的类型。kryo.writeClassAndObject()kryo.readClassAndObject()


答案 2

当我在多个线程中使用序列化程序时,这种情况发生在我身上。它不是线程安全的,所以如果你以这种方式使用它,它可能会给你“缓冲区下溢”或其他异常。