【问题标题】:package com.google.protobuf does not exist on OS X MaverickOS X Maverick 上不存在包 com.google.protobuf
【发布时间】:2016-05-03 21:36:28
【问题描述】:

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

我能够成功地从 proto 创建 .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
....
....

有什么解决办法吗?

谢谢

【问题讨论】:

    标签: protocol-buffers osx-mavericks


    【解决方案1】:

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

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

    2. 如果maven package成功,你会在target文件夹下得到一个protobuf-java-2.6.0.jar,对我来说是/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

    那么你应该可以成功运行make java

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        @laike9m 的建议只对我部分有用。我绝对尝试按照@laike9m 的建议做所有java/README.txt 的事情。我不得不安装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
        

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 2013-11-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-09-15
            • 2013-12-14
            • 2013-11-10
            • 2017-09-10
            • 1970-01-01
            相关资源
            最近更新 更多