栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

protobuf3-java使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

protobuf3-java使用

protobuf3-java使用
  • 一、使用说明
  • 二、编译 `.proto` 文件

一、使用说明

官网说明文档:https://developers.google.cn/protocol-buffers/docs/javatutorial

下载编译工具:https://github.com/protocolbuffers/protobuf/releases/tag/v3.19.1


我用的是win10系统,这里选择的是 protoc-3.19.1-win64.zip
解压缩之后需添加系统环境变量

添加后 cmd 命令行查看 protoc --version

能正确显示版本号即配置成功

二、编译 .proto 文件
  1. 创建文件 AddressBookProtos.proto
syntax = "proto3";

package protobuf;

option java_multiple_files = true;
option java_package = "com.huawei.lc.protobuf";
option java_outer_classname = "AddressBookProtos";

message Person {
  optional string name = 1;
  optional int32 id = 2;
  optional string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    optional string number = 1;
    optional PhoneType type = 2;
  }

  repeated PhoneNumber phones = 4;
}

message AddressBook {
  repeated Person people = 1;
}
  • java_package 指定生成的类应该使用的 Java 包名称,如果没有明确指定,它只会匹配package声明给出的包名,但这些名称通常不是合适的 Java 包名(因为它们通常不以域名开头)
  • java_outer_classname 选项定义将表示此文件的包装类的类名
  • java_multiple_files = true 选项可以生成单独的.java每个生成的类的文件(而不是.java为包装类生成单个文件的遗留行为,使用包装类作为外部类,并将所有其他类嵌套在包装类中)

2.执行命令

protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/addressbook.proto

#参数说明
protoc -I=源地址 --java_out=目标地址  源地址/xxx.proto
此处生成时会以 proto 里面注明的java_package为路径完整生成,所以目标地址不必包含java_package及之后的路径,
比如:option java_package = "com.test.protocol";,那么就会生成com/test/protocol/XXX.java

-I:主要用于指定待编译的 .proto 消息定义文件所在的目录,即可能出现的包含文件的路径,该选项可以被同时指定多个。
此处指定的路径不能为空,如果是当前目录,直接使用.,如果是子目录,直接使用子目录相对径,如:foo/bar/baz,
如果要编译的文件指定的文件路径为baz/test.proto,那么应这么写-I=foo/bar,而不要一直写到baz

我这里执行 protoc -I=D:Dataprotobuf --java_out=D:DataprotobufAddressBookProtos D:Dataprotobuf/AddressBookProtos.proto

可以看到生成以下文件:

将文件copy到IDEA相应的目录层级,如下图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号