我有一条消息(说它叫做 OuterMessage)
message OuterMessage {
optional int64 id = 1;
optional InnerMessage inner = 2;
}
和内心的讯息
message InnerMessage {
optional string type = 1;
optioanl int64 id = 2;
}
现在,当我在 OuterMessage 上调用 parseFrom 时,OuterMessage.parseFrom(buffer)
该方法永远不会返回,也不会抛出任何异常。但如果我这样做InnerMessage.parseFrom(buffer)
,它会返回一个空的 InnerMessage 实例。
我正在使用 protobuf-net 序列化消息。知道可能导致问题的原因吗?
更新:我检查了调试器控制台并抛出了以下异常:
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)
我检查了 java 和 C# 的 .proto 文件。该消息KeyValuePackageResponseProtocol
还用于许多其他似乎初始化良好的消息。我应该看什么来解决这个问题?