java kryo register_kryo处理unmodifiedList报错问题
序列化的对象如下
public class MixedData{
private Proto.RepeatedModel protoData;
private int normalData;
}
proto模型定义如下
message RepeatedModel {
repeated int32 data;
}
关键报错信息如下
Caused by: java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableCollection.add(Collections.java:1075)
at com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:109)
at com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:22)
at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:679)
at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106)
... 48 more
原因很清楚, 对于repeated字段,proto编译生成的是UnmodifiedList,kryo中没有注册UnModifiedList的序列化器,使用了CollectionSerializer去做序列化,CollectionSerializer的反序列化策略关键点如下
for (int i = 0; i < length; i++)
collection.add(kryo.readObject(input, elementClass, serializer));
这里的collection是由序列化使用的list类型决定的,在本文就是UnmodifiableCollection,一切至此明了.
一个可行的解决方案如下(未测试)
添加如下依赖
de.javakaffee
kryo-serializers
0.42
在kryo配置处注册serializer
this.register(UnmodifiableCollectionsSerializer.class);
java kryo register_kryo处理unmodifiedList报错问题相关推荐
- 【hadoop】java 获取 yarn app 信息 报错 ConfiguredRMFailoverProxyProvider - Failing over to rm2
文章目录 1.概述 1.概述 java 获取 yarn app 信息 报错 ConfiguredRMFailoverProxyProvider - Failing over to rm2 2022-0 ...
- JMETER java.net.SocketException: Connection reset 报错解决方案
JMETER java.net.SocketException: Connection reset 报错解决方案 参考文章: (1)JMETER java.net.SocketException: C ...
- JAVA类运行时,报错“Error occurred during initialization of boot layer”
JAVA类运行时,报错"Error occurred during initialization of boot layer" 网上查原因是由于JDK9及以上版本引入了模块,所以在 ...
- 记录一个bug 关于 java 解压缩包 写入本地报错 :java.io.FileNotFoundException(系统找不到指定的路径。)
记录一个bug 关于 java 解压缩包 写入本地报错 :java.io.FileNotFoundException(系统找不到指定的路径.) 第一想法是路径问题: 1.检查文件路径是否正确 2.另外 ...
- java项目如何启动tomcat服务器,Java web项目启动Tomcat报错解决方案
Java web项目启动Tomcat报错解决方案 点击运行项目时显示 A Java Exception has occurred. 'Starting Tomcat v9.0 Server at lo ...
- java.sql.SQLSyntaxErrorException: Unknown database报错问题
java.sql.SQLSyntaxErrorException: Unknown database报错问题 一.出现原因 笔者在测试接口启动项目Java连接MySQL数据库时,出现了如下报错:jav ...
- 软件开发Linux环境下,java通过JNA调用so报错,求大神解答,感激不尽。
软件开发Linux环境下,java通过JNA调用so报错,求大神解答,感激不尽. 图片说明 最佳答案: 专家已采纳 先用c等调用一下so,看函数能否正确调用 文章来源:https://ask.csdn ...
- java找不到对象报错_java找不到对象报错
java找不到对象报错 [2021-02-04 02:18:22] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/(\ ...
- (007) java后台开发之Scanner报错java.util.NoSuchElementException
在测试Scanner 时写了两次 .close(); 结果运行报错. 原因参考:http://www.cnblogs.com/qingyibusi/p/5812725.html 一个方法A使用了Sca ...
最新文章
- SpringBoot中实现quartz定时任务
- OracleDB的数据库名,实例名,服务名,数据库域名,全局数据库名的简单介绍
- 导出Excel神器最终版
- 线程的创建方式及Runnable与Callable的区别
- html自动跳转页面,HTML实现页面自动跳转的五种方法
- 博主力推!!NRF52832 BLE 抓包sniffer来了!附带安装使用说明
- FCSAN存储与服务器关联映射 在Linux系统中如何识别操作
- 山东省第八届 ACM 省赛 Parity check (规律、水)
- 随机密码生成Python
- 蚂蚁算法python_Python编程实现蚁群算法详解
- android系统优化排行,性能最强的10大安卓手机排行,你用的排第几?
- C语言中||和能同时出现在一条语句中吗?
- 三菱CC-link IE field basic 控制伺服轴
- 阀门的开关方向_阀门的开关方向如何正确操作阀门
- C#利用zedgraph绘制曲线
- SIM800_基本指令调试笔记
- 第一篇:DDR3和mig的介绍
- web端输出打印地图(ArcGIS api for Javascript)一、地图打印模板的制作
- Easylogging++ Verbose日志详解
- 违禁词查询 麦谈帮API数据接口