2011-10-30 151 views
2

我有2個.proto文件:協議緩衝區:如何導入?

第一個文件:

package com.test.model; 

message ProtoModel { 
    required CustomObj custom=1; 
} 

第二個文件:

package com.test.model; 

message CustomObj { 
    required string smth=1; 
} 

這裏的問題是, 「CustomObj」 被說成是「未解決的參考「。 因此,我試圖在第二個文件導入到第一個文件:

import "com/test/model/firstFile.proto" 

package com.test.model;  

message ProtoModel { 
    required CustomObj custom=1; 
} 

我仍然得到同樣的問題!

+1

我懷疑這是一個包預選賽的事情...嘗試無論是在一個包,與包名 –

+0

其實這就是我所做的排位賽消息的名字放置,我把所有的人一個文件,以節省一些時間在這裏... Thx :) – Echo

+0

我有以下錯誤,當我嘗試將它們添加到一個文件:http://stackoverflow.com/questions/7952447/protocol-buffer-enum -issue – Echo

回答

5

導入語句是相對於您調用protoc的地方的文件夾。 看起來您已將其視爲相對於包而言。

例如如果(像我)你這兩個文件存儲在src/main/resources,你會調用protoc如下:

protoc src/main/resources/firstFile.proto src/main/resources/secondFile.proto --java_out=src/generated/java 

和你的import語句將import "src/main/resources/firstFile.proto"

如果要根據包中的文件存儲在子文件夾名稱,那麼您只需在頂級文件夾名稱後添加相應內容即可。

HTH

+0

其實這就是我所做的;我把它們放在一個文件中,以節省一些時間在這裏...... Thx :) – Echo

+0

當我嘗試將它們添加到一個文件時,出現以下錯誤:http: //stackoverflow.com/questions/7952447/protocol-buffer-enum-issue – Echo