尝试获取主模块包 ID 的 InvalidProtocolBufferException

InvalidProtocolBufferException trying to get main module package id

我正在尝试使用 java 分类帐 api 并基于 ping pong 示例来设置应用程序。但是,方法 "containsModule" 抛出异常:

InvalidProtocolBufferException.java "Protocol message had too many levels of nesting. May be malicious. Use CodedInputStream.setRecursionLimit() to increase the depth limit."

这一行:

//parse the archive payload
DamlLf.ArchivePayload payload = DamlLf.ArchivePayload.parseFrom(getPackageResponse.getArchivePayload());

你能帮忙解决一下吗? 谢谢

通常,包太大,protobuf 无法消化。根据错误提示,您可以明确设置递归限制,例如

CodedInputStream cos =
  CodedInputStream.newInstance(getPackageResponse.getArchivePayload());
cos.setRecursionLimit(1000);
DamlLf.ArchivePayload payload = DamlLf.ArchivePayload.parser().parseFrom(cos);

我们将修复该示例,感谢您指出这一点。