InvalidProtocolBufferException при попытке получить основной идентификатор пакета модуля - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь настроить приложение, используя java ledger api и основываясь на примере пинг-понга.Тем не менее метод «containsModule» вызывает исключение:

InvalidProtocolBufferException.java "Сообщение протокола имеет слишком много уровней вложенности. Может быть вредоносным. Используйте CodedInputStream.setRecursionLimit () для увеличения предела глубины."

в этой строке:

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

Не могли бы вы помочь в этом?Спасибо.

1 Ответ

0 голосов
/ 14 февраля 2019

Зачастую пакеты слишком велики, чтобы протобуф мог их переварить.Как следует из ошибки, вы можете явно установить предел рекурсии, например,

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

Мы исправим пример, спасибо за указание на это.

...