2016-04-30 3 views
0

У меня есть два бережливость файлы: common.thrift, proto.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 * myapi.myapp.com'. Таким образом, re IDL будет немного сложнее с помощью 'namespace' для ссылок (какой?) - и слишком много подробностей. – JensG