jprotobuf
jprotobuf copied to clipboard
.proto 描述文件动态生成对象,支持嵌套格式吗?
我尝试了下用“增加由.proto 描述文件动态生成Protobuf操作对象的支持”生成新的java对象,发现简单的.proto文件可以,但是嵌套的.proto文件就会报错,是不支持嵌套格式吗?
支持嵌套的
message Obj { message KeyValue { optional string key = 1; optional string value = 2; } repeated KeyValue http_key_value = 1; }
这种方式能支持吗?
支持的
但是我使用 Map<String, IDLProxyObject> objectMap = ProtobufIDLProxy.create(protoCotent);的 时候 是报错的哦。 Exception in thread "main" java.lang.RuntimeException: Message 'Http' depend on message 'KeyVal' is missed at com.baidu.bjf.remoting.protobuf.ProtobufIDLProxy.create(ProtobufIDLProxy.java:206) at com.baidu.bjf.remoting.protobuf.ProtobufIDLProxy.create(ProtobufIDLProxy.java:197) at com.baidu.bjf.remoting.protobuf.ProtobufIDLProxy.create(ProtobufIDLProxy.java:193)
Message 'Http' depend on message 'KeyVal' is missed 他这个有提示的。你上面给的例子是能正常工作的。你帖一下你使用的 proto文件出来吧
String protoCotent = "package so_rtrs_req_res; " + "option java_package = "com.rtrs.proto"; " + "option java_outer_classname = "ReqRes"; " + " " + "message Http " + "{ " + "message KeyVal " + "{ " + " optional string key = 1; " + " optional string val = 2; " + "} " + " " + " " + " optional string uri = 1; " + " optional uint32 type = 2; " + " repeated KeyVal param_addon = 3; " + " optional string name = 4; " + "} " + " " + " " ; Map<String, IDLProxyObject> objectMap = ProtobufIDLProxy.create(protoCotent);
上面的代码用最新的版本1.10.7可以工作的。你使用版本是多少?
我以为2.1.4是最新版本呢。我用的是2.1.4
2.1.4版本的确有这个问题,2.x版本是针对protobuf 3.x的,后面会修复一下
Ok. Thank you for your nicd share
2.1.5已经修复该问题