"Exception in thread "Thread-502" java.lang.IllegalArgumentException: Class 'java.util.List' must has default constructor method with no parameters.\n\tat com.baidu.bjf.remoting.protobuf.ProtobufProxy.getCodeGenerator(ProtobufProxy.java:383)\n\tat com.baidu.bjf.remoting.protobuf.ProtobufProxy.create(ProtobufProxy.java:155)\n\tat com.baidu.bjf.remoting.protobuf.ProtobufProxy.create(ProtobufProxy.java:128)\n\tat com.baidu.bjf.remoting.protobuf.ProtobufProxy.create(ProtobufProxy.java:116)\n\tat com.iohao.game.common.kit.ProtoKit.parseProtoByte(ProtoKit.java:75)\n\tat com.iohao.game.action.skeleton.core.codec.ProtoDataCodec.decode(ProtoDataCodec.java:38)\n\tat com.iohao.game.action.skeleton.core.DataCodecKit.decode(DataCodecKit.java:62)\n\tat com.iohao.game.action.skeleton.core.commumication.InvokeModuleContext.invokeModuleMessageData(InvokeModuleContext.java:102)\n\tat com.rcqt.server.Test.getViewersByMoveIdNow(Test.java:30)\n\tat com.rcqt.server.LogicServerStartup.lambda$startupSuccess$1(LogicServerStartup.java:70)\n\tat java.base/java.lang.Thread.run(Thread.java:833)\nCaused by: java.lang.NoSuchMethodException: java.util.List.()\n\tat java.base/java.lang.Class.getConstructor0(Class.java:3585)\n\tat java.base/java.lang.Class.getConstructor(Class.java:2271)\n\tat com.baidu.bjf.remoting.protobuf.ProtobufProxy.getCodeGenerator(ProtobufProxy.java:380)\n\t... 10 more\n怎么解决内容:该错误提示说明在使用ProtobufProxy生成代码时,发现java.util.List这个类没有默认的构造方法(即无参构造方法)。ProtobufProxy在生成代码时需要使用默认构造方法来实例化对象。\n\n要解决这个问题,可以尝试以下几种方法:\n\n1. 如果你有权限修改java.util.List类的源代码,可以在该类中添加一个无参构造方法。\n\n2. 如果你无法修改java.util.List类的源代码,可以使用ProtobufProxy的另一个方法ProtobufProxy.create(Class<T> cls, boolean useCache)来创建对象。该方法的第二个参数设置为false,表示不使用缓存。这样就不会检查默认构造方法了。例如:ProtobufProxy.create(java.util.List.class, false)。\n\n3. 如果你只是想序列化和反序列化java.util.List类型的对象,可以考虑使用其他序列化库,例如JacksonGson,这些库可以处理没有默认构造方法的类。\n\n希望这些解决方法能帮助到你。

java.util.List 没有默认构造方法的解决方法 - ProtobufProxy 错误解决

原文地址: https://www.cveoy.top/t/topic/qFEH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录