【发布时间】:2015-12-22 06:16:34
【问题描述】:
我有以下自定义异常,我需要使用 kryo 库对其进行序列化。
public class CustomException extends Exception {
public CustomException(){}
}
这是我的序列化器
Kryo kryo = new Kryo();
kryo.writeClassAndObject(out, obj);
但是序列化会引发以下异常。
com.esotericsoftware.kryo.KryoException: Class cannot be created (missing no-arg constructor): java.util.Collections$UnmodifiableRandomAccessList
Serialization trace:
suppressedExceptions (CustomException)
at com.esotericsoftware.kryo.Kryo$DefaultInstantiatorStrategy.newInstantiatorOf( Kryo.java:1272)
at com.esotericsoftware.kryo.Kryo.newInstantiator(Kryo.java:1078)
我已经用JavaSerializer注册CustomException解决了这个问题
kryo.register(CustomException.class, new JavaSerializer());
但是由于JavaSerializer 效率非常低(建议避免在JavaSerializer javadoc 中尽可能使用),还有其他方法可以在kryo 中序列化异常对象吗?
【问题讨论】:
-
你已经抛出了一个比 Java 序列化器效率低的异常。除非您的应用程序经常抛出很多异常,否则我认为尝试自定义它没有意义。
-
我遇到了同样的问题...你是怎么解决这个问题的?
-
使用
JavaSerializer,正如我在问题中所说的那样。
标签: java serialization kryo