0
我使用KRYO串行序列化我的Java对象使用KRYO非序列化到序列化类属性
我的Java对象是这样的
Class A {
private Class B;
private Class C;
private Class D;
int x ;
int y;
}
B,C和d是第三方库,而不是可串行化。另外我不能编辑他们的代码。
我使用这样的Kryo来序列化 A a = new A(); //填充A 的属性Kryo kryo = new Kryo(); 输出输出=新输出(新FileOutputStream(“file.bin”)); kryo.writeClassAndObject(output,A); output.close();
和反序列化
input = new com.esotericsoftware.kryo.io.Input(new FileInputStream("file.bin"));
InputQueueManagerImpl inputQueue = (A) kryo.readClassAndObject(input);//, A.class);
input.close();
在执行时,我得到ConcurrentModificationException的
at apache.Application.main(Application.java:43)
Caused by: com.esotericsoftware.kryo.KryoException: java.util.ConcurrentModificationException
Serialization trace:
classes (sun.misc.Launcher$AppClassLoader)
contextClassLoader (java.lang.Thread)
threads (java.lang.ThreadGroup)
parent (java.lang.ThreadGroup)
group (java.util.concurrent.Executors$DefaultThreadFactory)
threadFactory (java.util.concurrent.ThreadPoolExecutor)
executor (com.rabbitmq.client.impl.ConsumerWorkService)
workService (com.rabbitmq.client.impl.ConsumerDispatcher)
dispatcher (com.rabbitmq.client.impl.ChannelN)
_channelMap (com.rabbitmq.client.impl.ChannelManager)
_channelManager (com.rabbitmq.client.impl.AMQConnection)
delegate (org.springframework.amqp.rabbit.connection.SimpleConnection)
target (org.springframework.amqp.rabbit.connection.CachingConnectionFactory$ChannelCachingConnectionProxy)
checkoutPermits (org.springframework.amqp.rabbit.connection.CachingConnectionFactory)
connectionFactory (org.springframework.amqp.rabbit.core.RabbitAdmin)
amqpAdmin (mqclient.rabbitmq.manager.impl.InputQueueManagerImpl)
at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:585)
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
当我做B,C,d瞬态它工作正常。但我想序列化B,C,D。
kryo能帮忙吗?如果是,那么执行该操作的正确方法是什么?