当前位置: 首页 > 知识库问答 >
问题:

protobuf生成的Java类有编译错误

倪鸿禧
2023-03-14

我试图从protobuf生成java类。

下面是我的协议-

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\u out=main/java main/proto/datamodel。协议

该协议是从链接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-L890。internalBuildGeneratedFileFrom的2号参数重载版本。

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

共有2个答案

汪学真
2023-03-14

确保您在代码中使用的依赖项与您用作原型编译器的依赖项相同,例如,这里我使用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;
}

这很有效。

郭兴平
2023-03-14

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

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

$ main/exec/protoc --version
libprotoc 3.7.1
 类似资料:
  • [ERROR]$home/workspace/javaExamplePbServiceCall/src/main/java/example/ServiceCallPiqi.java:[13,23]ERROR:';‘预期 手工编译产生100个错误,这里是第一个: javac-cp$home/.m2/repository/com/google/protobuf/protobuf-java/2.4.1/

  • 我创建了一个简单的. proto文件并执行了编译器(protoc-2.5.0rc1-win32.zip)。为规定的包生成了一个java文件。但是,生成的文件不会编译。. proto文件很简单,只有一条消息,其中包含一堆简单类型的可选字段(正确编号)。. java文件不编译,例如: 构造函数生成了消息。FieldAccessorTable(Descriptors.Descriptor,字符串[])未

  • 当使用Google Protocol Buffers Version3.0.0(发行版)时,maven编译以下生成的java-class会导致编译器错误: 这只是生成的类之一,所有类的maven错误都是一样的,如下所示: 这些类包含在工作的Maven-Tycho-Build配置中,其类路径上有protobuf-java-3.0.0.jar。在Eclipse中编译代码时,它没有编译器错误。 此外,当

  • 我正在尝试为协议缓冲区构建Java运行时库。我在Windows和OS X上都犯了错误,因为我遵循了Protocol Buffers项目(从中克隆而来)中Java目录下的自述指令https://github.com/google/protobuf). 当我在protobuf/java目录下运行

  • []Flutter(Channel master,v1.4.12-pre.27,on Linux,locale en_us.utf-8)•Flutter版本1.4.12-pre.27 at/home/jeremy/fluttersdk/Flutter•Framework修订版a12c5618de(5小时前),2019-04-08 11:22:19-0400•Engine修订版ff1bcdc009•

  • 我们试图从Jenkins构建一个maven工件并将其部署到我们的Nexus存储库管理器中,但是我们在构建过程中遇到了编译错误。这就是我们得到的错误! 错误]无法执行目标org.apache.maven.plugins:maven-compiler-plugin:3.5.1:在项目上编译(default-compile)studentapp:编译失败错误]此环境中没有提供编译器。您可能是在JRE上运