方法emptyIntList()未定义

时间:2019-03-29 15:47:27

标签: protobuf-java google-protocol-buffer

我是 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编译器命令进行编译。我从here下载了编译器。

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

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

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

1 个答案:

答案 0 :(得分:1)

是新手,似乎我忘记了更新 Protobuf编译器时更新 Google Protobuf运行时。两个版本必须匹配。

这是2个解决方案。

  1. Maven用户-在您的 POM 文件中包括以下依赖项。
    <dependency>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java</artifactId>
      <version>x.y.z</version>
    </dependency>
  1. 非Maven用户-将 protobuf-java-x.y.z.jar 包含在类路径中。