2013-11-24 20 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