方法 emptyIntList() 未定义

The method emptyIntList() is undefined

我是 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,但是有错误。 在 class 中使用了两种方法 'emptyIntList()' 和 'newIntList()' 但它们没有定义.

现在我的问题是如何解决这些错误,还是我遗漏了什么?

作为新手,我似乎忘记在更新 Protobuf 编译器 时更新 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-x.y.z.jar