可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I am on OS X Mavericks and starting learning about protobuf, i download the example from https://code.google.com/p/protobuf/downloads/list
I am successfully able to create the .java file from the proto but while compiling the existing java code using
make java, i am getting following error
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 .... ....
Any resolution to this?
Thanks
回答1:
Met the same problem and finally got it working. Here's what I did(using version 2.6.0) on OSX 10.9:
Do everything java/README.txt
tells you to
if maven package
succeed, you'll get a protobuf-java-2.6.0.jar
under target
folder, for me it's /Users/laike9m/Dev/protobuf-2.6.0/java/target/protobuf-java-2.6.0.jar
.
create ~/Library/Java/Extensions
folder, note: this is platform specific operation, for OS other than OSX it should be $JAVA_HOME/lib/ext
copy protobuf-java-2.6.0.jar
to ~/Library/Java/Extensions
Then you should be able to run make java
successfully.
回答2:
You need to include libprotobuf.jar
in your CLASSPATH
. Follow the instructions under java/README.txt
in the Protobuf source package to build it.
回答3:
What @laike9m suggested only partially worked for me. I definitely tried to do everything java/README.txt
as @laike9m suggested. I had to install maven. I used brew
to do that (brew install maven
). I then built the protocol buffers java source using mvn package
. The first time I tried that, it failed due to some obscure-ish error. I built the C++ code using ./configure && make
. Next time I tried to build the java code using mvn package
it worked. It put the resulting jar in a folder called target
. I think went back to the examples area and was able to build the java example using make
but I had to modify the Makefile
by adding the -classpath...
part below:
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:
Download protobuf.jar from below link and add jar file into libs folder.Its work for me.
https://code.google.com/archive/p/android-market-api/downloads