처음으로 프로토콜 버퍼를 사용하려고합니다. 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;
}
내가 다음 명령을 사용하여 컴파일 : 그것은 오류없이 실행 addressbook.java을 생산
protoc -I=../examples --java_out=src/main/java ../examples/addressbook.proto
. 하지만 내가 말할 수있는 것부터, * .class가 필요해 이클립스 환경에서 사용할 수 있습니다.
protoc -I=../examples --java_out=src/main/java/addressbook.jar ../examples/addressbook.proto
을하지만 프로젝트에 그 항아리를 가져온 후, 일식 내가 수업을 필요로 말한다 : 나는 명령으로 * .jar 파일로 출력을 시도했다. 나는 examples 디렉토리에있는 동안 명령어로 클래스를 컴파일하려고 시도했다.
javac *java
파일을보고 있지만 "100 errors"가 뒤 따르는 일련의 줄을 반환합니다. 나는 내가 완전히 잃어버린 것일 수도 있고 올바른 생각에 가깝지 않을 수도 있음을 이해한다. 그러나 어떤 도움도 위대 할 것이다! 감사!
아 여기 ...이 프로토를 호출하는 코드입니다
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!
와우! 그게 다야 ... 이런! 정말 고맙습니다! 그게 필요해! – user697048