0

我有一个看起来像这样的 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。

4

1 回答 1

1

很可能您的 JAR 文件在与您预期不同的包中包含此类。

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

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

请查看本教程以获取更多信息。

于 2012-11-20T15:03:29.173 回答