У меня есть сообщение (скажем, оно называется OuterMessage)
message OuterMessage {
optional int64 id = 1;
optional InnerMessage inner = 2;
}
и внутреннее сообщение
message InnerMessage {
optional string type = 1;
optioanl int64 id = 2;
}
Теперь, когда я вызываю parseFrom в OuterMessage, как OuterMessage.parseFrom(buffer)
, метод никогда не возвращается и не выдает никаких исключений. Но если я сделаю InnerMessage.parseFrom(buffer)
, он вернет пустой экземпляр InnerMessage.
Я сериализую сообщение, используя protobuf-net. Есть идеи, что может быть причиной проблемы?
UPDATE:
Я проверил консоль отладчика, и возникло следующее исключение:
Caused by: java.lang.IllegalArgumentException: Invalid embedded descriptor for "KeyValuePackageResponse.proto".
at com.google.protobuf.Descriptors$FileDescriptor.internalBuildGeneratedFileFrom(Descriptors.java:286)
at com.myproj.protobuf.KeyValuePackageResponseProtocol.<clinit>(KeyValuePackageResponseProtocol.java:538)
... 15 more
Caused by: com.google.protobuf.Descriptors$DescriptorValidationException: KeyValuePackageResponse.proto: Dependencies passed to FileDescriptor.buildFrom() don't match those listed in the FileDescriptorProto.
at com.google.protobuf.Descriptors$FileDescriptor.buildFrom(Descriptors.java:231)
at com.google.protobuf.Descriptors$FileDescriptor.internalBuildGeneratedFileFrom(Descriptors.java:284)
Я проверил .proto файл на то же самое для java и C #. Это сообщение KeyValuePackageResponseProtocol
также используется во многих других сообщениях, которые, похоже, инициализируются нормально. Любая конкретная вещь, на которую я должен обратить внимание, чтобы решить эту проблему?