2012-11-19 104 views
0

我有一個myprotofile.proto文件看起來像這樣建築,谷歌協議緩衝區JAR文件

package PBPackage; 
message SomeMessage { 
    required double someItem = 1; 
} 

我建立像這樣(我在Linux上)

JAVADIR=../../MyJarFile.jar 
protoc -I=. --java_out=${JAVADIR} myprotofile.proto 
的Java應用程序

我的Java程序,Program.java,看起來像這樣

import PBPackage.SomeMessage; 
public class Program { 
     public static void main(String[] args){ 
      System.out.println("this is my program"); 
     } 
    } 

我嘗試建立Program.java這樣

javac -cp .:MyJarFile.jar Program.java 

但我總是得到這樣的錯誤:

Program.java:1 error cannot find symbol 
import PBPackage.SomeMessage; 
       ^
symbol:   class SomeMessage 
location:   package PBPackage 

我在做什麼錯?

最後,請不要告訴我使用一些像ant或maven這樣過於複雜的構建系統。

+0

我認爲你應該使用分號來分隔類路徑條目'的javac -cp。myJarFile.jar中Program.java' – hoaz

+0

都能跟得上這對你檢查你的 – devin

+0

JAR文件的內容的窗口,有位於PBPackage文件夾SomeMessage類? – hoaz

回答

1

大多數情況下,您的JAR文件包含的這個類不同於您期望的類。

有兩個選項,你可以在你的protobuf定義文件用於生成的代碼來顯式指定包和類名:

option java_package = "com.example.tutorial"; 
option java_outer_classname = "AddressBookProtos"; 

請檢查this tutorial以獲取更多信息。