Я пытаюсь использовать буферы протокола в первый раз. Я следую учебнику, предоставленному Google. * .proto Я делаю это следующим образом:Как получить файл класса из protoc.exe
package tutorial;
option java_package = "com.example.tutorial";
option java_outer_classname = "AddressBookProtos";
message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 4;
}
message AddressBook {
repeated Person person = 1;
}
Затем я скомпилировать его с помощью следующей команды:
protoc -I=../examples --java_out=src/main/java ../examples/addressbook.proto
Он работает без ошибок и производит addressbook.java. Но из того, что я могу сказать, мне нужен * .class, чтобы я мог использовать его в среде eclipse. Я пытался выводить его в * .jar файл с помощью следующей команды:
protoc -I=../examples --java_out=src/main/java/addressbook.jar ../examples/addressbook.proto
Но после импорта этой банки проекта, затмение говорит, что мне нужно классы. Я также попытался скомпилировать его в класс с помощью команды, пока я в каталоге примеров.
javac *java
Он видит файл, но возвращает тонну строк, за которым следует «100 ошибок». Я понимаю, что я могу быть полностью потерян и даже не близок к правильной идее ... но любая помощь была бы замечательной! Благодаря!
ой и вот код, который вызывает этот прото ...
import com.example.tutorial.AddressBookProtos.AddressBook;
import com.example.tutorial.AddressBookProtos.Person;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintStream;
class ListPeople {
// Iterates though all people in the AddressBook and prints info about them.
static void Print(AddressBook addressBook) {
for (Person person: addressBook.getPersonList()) {
System.out.println("Person ID: " + person.getId());
System.out.println(" Name: " + person.getName());
if (person.hasEmail()) {
System.out.println(" E-mail address: " + person.getEmail());
}
for (Person.PhoneNumber phoneNumber : person.getPhoneList()) {
switch (phoneNumber.getType()) {
case MOBILE:
System.out.print(" Mobile phone #: ");
break;
case HOME:
System.out.print(" Home phone #: ");
break;
case WORK:
System.out.print(" Work phone #: ");
break;
}
System.out.println(phoneNumber.getNumber());
}
}
}
// Main function: Reads the entire address book from a file and prints all
// the information inside.
public static void main(String[] args) throws Exception {
if (args.length != 1) {
System.err.println("Usage: ListPeople ADDRESS_BOOK_FILE");
System.exit(-1);
}
// Read the existing address book.
AddressBook addressBook =
AddressBook.parseFrom(new FileInputStream(args[0]));
Print(addressBook);
}
}
СПАСИБО!
Link to protobuf tutorial I am using!
WOW! Это было все ... geez! Спасибо огромное! Я нуждаюсь в этом! – user697048