Java Protobuf 错误:'java.lang.Integer' 类缺少无参构造函数

在使用 Protobuf 生成代码时,可能会遇到以下错误:

Exception in thread "Thread-502" java.lang.IllegalArgumentException: Class 'java.lang.Integer' must has default constructor method with no parameters.
	at com.baidu.bjf.remoting.protobuf.ProtobufProxy.getCodeGenerator(ProtobufProxy.java:383)
	at com.baidu.bjf.remoting.protobuf.ProtobufProxy.create(ProtobufProxy.java:155)
	at com.baidu.bjf.remoting.protobuf.ProtobufProxy.create(ProtobufProxy.java:128)
	at com.baidu.bjf.remoting.protobuf.ProtobufProxy.create(ProtobufProxy.java:116)
	at com.iohao.game.common.kit.ProtoKit.parseProtoByte(ProtoKit.java:75)
	at com.iohao.game.action.skeleton.core.codec.ProtoDataCodec.decode(ProtoDataCodec.java:38)
	at com.iohao.game.action.skeleton.core.DataCodecKit.decode(DataCodecKit.java:62)
	at com.iohao.game.action.skeleton.core.commumication.InvokeModuleContext.invokeModuleMessageData(InvokeModuleContext.java:102)
	at com.rcqt.server.Test.invokeUpdateOneTrainingGroundDataAction(Test.java:41)
	at com.rcqt.server.LogicServerStartup.lambda$startupSuccess$1(LogicServerStartup.java:74)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NoSuchMethodException: java.lang.Integer.<init>()
	at java.base/java.lang.Class.getConstructor0(Class.java:3585)
	at java.base/java.lang.Class.getConstructor(Class.java:2271)
	at com.baidu.bjf.remoting.protobuf.ProtobufProxy.getCodeGenerator(ProtobufProxy.java:380)
	... 10 more

这个错误表明在使用 Protobuf 生成代码时,发现 java.lang.Integer 类没有默认构造函数(无参构造函数)。

解决方法

由于 java.lang.Integer 是一个不可变的类,它已经提供了默认构造函数,但可能是你的代码中存在其他错误导致它无法找到该函数。

你可以尝试以下解决方案:

  1. 检查代码: 仔细检查你的代码,确保你没有手动创建 java.lang.Integer 实例,或者使用其他方法传递 null 值给 Integer 对象。
  2. 更新依赖: 确保你使用的 Protobuf 库是最新的版本。更新可能修复了潜在的 bug,解决你遇到的问题。
  3. 清理缓存: 清理你的项目缓存,并重新构建项目。
  4. 检查其他库: 检查你使用的其他库,确保它们没有冲突或错误地使用 Integer 类。

如果你仍然遇到问题,请提供更详细的代码和环境信息,以便进行更准确的诊断。

Java Protobuf 错误:'java.lang.Integer' 类缺少无参构造函数

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

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