OS X Maverick上不存在com.google.protobuf包

时间:2013-11-24 22:22:25

标签: protocol-buffers osx-mavericks

我在OS X Mavericks并开始学习protobuf,我从https://code.google.com/p/protobuf/downloads/list下载示例

我能够成功地从proto创建.java文件,但在使用

编译现有java代码时

make 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
....
....

对此有何决议?

由于

4 个答案:

答案 0 :(得分:5)

遇到同样的问题,终于搞定了。这是我在OSX 10.9上所做的(使用2.6.0版):

  1. 将所有内容java/README.txt告诉您

  2. 如果maven package成功,您就会在protobuf-java-2.6.0.jar文件夹下找到target,对我而言/Users/laike9m/Dev/protobuf-2.6.0/java/target/protobuf-java-2.6.0.jar

  3. 创建~/Library/Java/Extensions文件夹,注意:这是特定于平台的操作,对于OSX以外的操作系统应该是$JAVA_HOME/lib/ext

  4. protobuf-java-2.6.0.jar复制到~/Library/Java/Extensions

  5. 然后您应该能够成功运行make java

答案 1 :(得分:1)

您需要在libprotobuf.jar中加入CLASSPATH。按照Protobuf源包中的java/README.txt下的说明进行构建。

答案 2 :(得分:0)

@ laike9m建议只为我部分工作。我绝对试图像@ laike9m建议的那样做java/README.txt。我不得不安装maven。我使用brew来做到这一点(brew install maven)。然后我使用mvn package构建了协议缓冲区java源代码。我第一次尝试,它失败了由于一些模糊的错误。我使用./configure && make构建了C ++代码。下次我尝试使用mvn package构建java代码时,它工作正常。它将生成的jar放在名为target的文件夹中。我想回到示例区域并且能够使用make构建java示例,但我必须通过添加下面的Makefile部分来修改-classpath...

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

答案 3 :(得分:0)

从下面的链接下载protobuf.jar并将jar文件添加到libs文件夹中。它适用于我。

https://code.google.com/archive/p/android-market-api/downloads