我正在尝试使用 java ledger api 并基于 ping pong 示例来设置一个应用程序。但是,方法“containsModule”抛出异常:
InvalidProtocolBufferException.java “协议(protocol)消息嵌套级别过多。可能是恶意的。使用 CodedInputStream.setRecursionLimit() 增加深度限制。”
在这一行:
//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);
我们将修复该示例,感谢您指出这一点。
关于java - InvalidProtocolBufferException 尝试获取主模块包 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54690867/