2016-04-30 57 views
0

我有兩個節儉文件:common.thriftproto.thrift節儉包括:類型尚未確定

內容:

common.thrift

namespace java ru.domain.myserv.common 

struct MyStruct { 
    1: i32 val 
} 

service MyServ { 
    1: MyStruct myStruct, 
    2: i32 val 
} 

proto.thrift

include "common.thrift" 

namespace java ru.domain.myserv.proto 

typedef ru.domain.myserv.common.MyServ MyServ 

struct ProtoServ { 
    1: MyServ myServ 
} 

接下來,我跑了節儉發生器:

thrift -r -out ../java --gen java proto.thrift

而且我在控制檯中看到的錯誤:

[ERROR:/path/proto.thrift:8] (last token was 'ru.domain.myserv.common.MyServ') Type "ru.domain.myserv.common.MyServ" has not been defined.

我做錯了嗎?

回答

1

哦,我的上帝。

我必須指定的

typedef common.MyServ MyServ

代替

typedef ru.domain.myserv.common.MyServ MyServ

但是那又怎麼樣namesapace是必要的嗎?

+0

'namespace'用於代碼生成。請注意,您可以有多個名稱空間,每個目標語言一個。當然還有星號形式'namespace * myapi.myapp.com'。因此,使用'namespace'作爲引用(哪一個?)會變得稍微複雜一些,而且太冗長了。 – JensG