使用Google Protocol Buffer JAR文件构建Java应用程序

时间:2012-11-19 21:33:14

标签: java protocol-buffers javac

我有一个看起来像这样的myprotofile.proto文件

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

我像这样构建它(我在linux上)

 JAVADIR=../../MyJarFile.jar
 protoc -I=. --java_out=${JAVADIR} myprotofile.proto

我的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。

1 个答案:

答案 0 :(得分:1)

很可能你的JAR文件在不同的包中包含了这个类。

您可以在protobuf定义文件中使用两个选项来明确指定生成代码的包名和类名:

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

请查看this tutorial了解详情。