Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serialization 使用Kryo序列化具有不可序列化属性的类_Serialization_Deserialization_Kryo_Java Custom Serialization - Fatal编程技术网

Serialization 使用Kryo序列化具有不可序列化属性的类

Serialization 使用Kryo序列化具有不可序列化属性的类,serialization,deserialization,kryo,java-custom-serialization,Serialization,Deserialization,Kryo,Java Custom Serialization,我正在使用Kryo序列化程序序列化我的Java对象 我的Java对象是这样的 Class A { private Class B; private Class C; private Class D; int x ; int y; } B、 C和D是第三方库,不可序列化。我也不能编辑他们的代码 我用这样的Kryo来序列化 A=新的A(); //填充对象的属性 Kryo Kryo=新Kryo(); 输出=新输出(新文件输出流(“file.bin”); writeClassAndObject(输出

我正在使用Kryo序列化程序序列化我的Java对象

我的Java对象是这样的

Class A {

private Class B;
private Class C;
private Class D;
int x ;
int y;
}
B、 C和D是第三方库,不可序列化。我也不能编辑他们的代码

我用这样的Kryo来序列化 A=新的A(); //填充对象的属性 Kryo Kryo=新Kryo(); 输出=新输出(新文件输出流(“file.bin”); writeClassAndObject(输出,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序列化您的类及其所有成员类(B,C,…)时,从另一个线程在整个层次结构中修改了某些内容。例如,假设类B包含一个列表。当您序列化类A->时,此列表中的某些内容发生了更改,然后您将得到上述异常。kryo就是这样设计的