尝试获取主模块包ID的InvalidProtocolBufferException

问题描述 投票:1回答:1

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

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

在这条线上:

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

你能帮忙吗?谢谢。

java daml
1个回答
1
投票

通常包装太大,无法使用protobuf消化。根据错误的建议,您可以明确设置递归限制,例如

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

我们将修复这个例子,感谢你指出这一点。

© www.soinside.com 2019 - 2024. All rights reserved.