2013-11-24 21 views
3

我在OS X小牛和开始学习protobuf的,我从https://code.google.com/p/protobuf/downloads/list包com.google.protobuf不能在OS X小牛存在

下载的例子,我能够成功地创建从该java文件原,但在编译时使用

使Java现有的Java代码,我收到以下错误

com/example/tutorial/AddressBookProtos.java:91: package com.google.protobuf does not exist 
     com.google.protobuf.GeneratedMessage 
         ^
com/example/tutorial/AddressBookProtos.java:12: package com.google.protobuf does not exist 
     extends com.google.protobuf.MessageOrBuilder { 
           ^
com/example/tutorial/AddressBookProtos.java:9: package com.google.protobuf does not exist 
     com.google.protobuf.ExtensionRegistry registry) { 
         ^
com/example/tutorial/AddressBookProtos.java:2495: package com.google.protobuf.Descriptors does not exist 
    private static com.google.protobuf.Descriptors.Descriptor 
               ^
com/example/tutorial/AddressBookProtos.java:2498: package com.google.protobuf.GeneratedMessage does not exist 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable 
.... 
.... 

的任何决议都这样做呢?

感谢

回答

1

您需要包括libprotobuf.jarCLASSPATH。按照Protobuf源包中的java/README.txt中的说明进行构建。

4

遇到同样的问题,并最终得到它的工作。这是我做了(使用2.6.0版)在OSX 10.9:

  1. 尽一切java/README.txt告诉你

  2. 如果maven package成功,你会得到一个protobuf-java-2.6.0.jartarget文件夹,对我来说这/Users/laike9m/Dev/protobuf-2.6.0/java/target/protobuf-java-2.6.0.jar

  3. 创建~/Library/Java/Extensions文件夹,注意:这是平台的具体操作上,对于OS比OSX等它应该是$JAVA_HOME/lib/ext

  4. 副本protobuf-java-2.6.0.jar~/Library/Java/Extensions

那么你应该能够运行make java成功。

0

什么@ laike9m建议只部分为我工作。我肯定试着做@java/README.txt @ laike9m建议。我不得不安装maven。我用brew来做到这一点(brew install maven)。然后我使用mvn package构建了协议缓冲区java源码。我第一次尝试时,由于一些模糊的错误而失败。我使用./configure && make构建了C++代码。下次我尝试使用mvn package来构建java代码。它将生成的jar放在一个名为target的文件夹中。我觉得又回到了实例区域,并能够生成使用make java的例子,但我不得不通过添加以下-classpath...部分修改Makefile:从下面的链接

javac_middleman: AddPerson.java ListPeople.java protoc_middleman 
    javac -classpath .:../java/target/protobuf-java-2.6.1.jar:$$CLASSPATH AddPerson.java ListPeople.java com/example/tutorial/AddressBookProtos.java 
    @touch javac_middleman