1

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

InvalidProtocolBufferException.java “协议消息的嵌套级别太多。可能是恶意的。使用 CodedInputStream.setRecursionLimit() 增加深度限制。”

在这条线上:

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

你能帮忙吗?谢谢。

4

1 回答 1

1

通常这些包太大,protobuf 无法消化。正如错误所建议的,您可以明确设置递归限制,例如

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

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

于 2019-02-14T14:08:42.313 回答