【问题标题】:Java class generated from protobuf has compilation errors从 protobuf 生成的 Java 类有编译错误
【发布时间】:2019-12-27 09:11:58
【问题描述】:

我正在尝试从 protobuf 生成 java 类。

下面是我的 protobuf -

syntax = "proto2";

package part2;

option java_package = "part2";

message OnlineStoreUser {
   required int32 userid = 1;
   required string username = 2;
   optional string useremail = 3;
}

我运行命令main/exec/protoc --java_out=main/java main/proto/datamodel.proto

协议下载自 链接https://github.com/protocolbuffers/protobuf/releases/tag/v3.7.1 其中osx-x86_64.zip。我也尝试了 3.8.0 和 3.9.1 版本。

第一个错误是https://gist.github.com/rajcspsg/07c1ddb889410397ba6fc6f26ab2b158#file-gistfile1-txt-L78。找不到此函数UnusedPrivateParameter 类型的参数。

第二个错误是https://gist.github.com/rajcspsg/07c1ddb889410397ba6fc6f26ab2b158#file-gistfile1-txt-L890internalBuildGeneratedFileFrom 的不是 2 arg 重载版本。

我的 proto 文件有什么问题。我该如何解决这个问题?

【问题讨论】:

    标签: protocol-buffers proto protobuf-java


    【解决方案1】:

    你提到的错误只发生在我的版本 3.9.1 中。版本 3.7.1 生成的文件不使用 UnusedPrivateParameter 或带有 2 个参数的 internalBuildGeneratedFileFrom 版本。而是使用带有3个参数的版本,不会导致任何错误。

    请检查您使用的协议版本是否正确:

    $ main/exec/protoc --version
    libprotoc 3.7.1
    

    【讨论】:

      【解决方案2】:

      确保您在代码中使用的依赖项与您用作 protobuf 编译器的依赖项相同,例如,这里我使用的是 gradle:

      compile group: 'com.google.protobuf', name: 'protobuf-java', version: '3.11.1'
      

      我的编译器版本是:

      ✗ protoc --version                                                
      libprotoc 3.11.1
      

      这是我的测试活动:

      syntax = "proto2";
      
      option java_package = "com.github.irvifa.protobuf.schema";
      
      message TestEvent {
          optional string event_name = 1 [default = "test.event"];
      
          optional string name = 2;
          optional string email = 3;
      }
      

      这行得通。

      【讨论】:

      • 这是解决方案,只需确保在生成类和 maven/gradle 项目依赖项时使用相同版本的 probuf
      • 那你能把这个标记为答案吗?谢谢:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      相关资源
      最近更新 更多