1

我是Google Protobuf的新手。尝试使用下面的student.proto文件来玩它。

syntax = "proto3";
package rld;

option java_package = "com.rld";
option java_outer_classname = "StudentDTO";

message Student {
    string name = 1;
    int32 roll = 2;  
    repeated int32 mark = 3; //Marks in various subjects
}

message StudentDatabase {
  repeated Student student = 1;
}

然后我尝试使用下面的 Protobuf 编译器命令对其进行编译。从这里,我下载了编译器。

protoc -I=. --java_out=. ./student.proto

它成功编译并生成StudentDTO.java,但有错误。类内部使用了两种方法' emptyIntList() '和' newIntList() ',但它们没有被定义。

现在我的问题是如何解决这些错误或者我错过了什么?

4

1 回答 1

1

作为新手,我似乎在更新Protobuf Compiler时忘记了更新Google Protobuf Runtime。两个版本必须匹配。

这里有2个解决方案。

  1. Maven 用户- 在您的POM文件中包含以下依赖项。
    <dependency>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java</artifactId>
      <version>x.y.z</version>
    </dependency>
  1. 非 Maven 用户- 在类路径中包含protobuf-java-xyzjar
于 2019-03-29T17:10:41.053 回答