找回密码
 立即注册
查看: 282|回复: 0

Protobuf生成Java代码(命令行)

[复制链接]
发表于 2021-10-9 20:18 | 显示全部楼层 |阅读模式
1.说明

本文介绍Protobuf生成Java代码的方法,
下载必须的Protobuf工具,
然后通过命令行,
把.proto文件生成Java代码。
2.准备Protobuf工具

2.1.获取protoc软件


用于处理proto文件的工具软件,
用其对proto文件生成消息对象
和序列化及反序列化的Java实体类。
下载地址:
https://repo1.maven.org/maven2/com/google/protobuf/protoc/3.12.0/
这里下载适配Windows 64位系统的软件:
protoc-3.12.0-windows-x86_64.exe
2.2.获取protoc-gen-grpc-java插件


用于处理rpc定义的插件,
用其生成针对rpc定义的Java接口。
下载地址:
https://repo1.maven.org/maven2/io/grpc/protoc-gen-grpc-java/1.32.1/
这里下载适配Windows 64位系统的软件:
protoc-gen-grpc-java-1.32.1-windows-x86_64.exe

把上面下载的两个文件放到同一个目录下,
比如C:\developtools\Protobuf。
3.创建.proto文件

在Protobuf下新建proto目录,
在里面创建helloworld.proto文件:
// 显示声明使用proto3, 否则使用默认的proto2syntax = "proto3";// 生成类的包名option java_package = "com.asiainfo.yuwen.grpc.helloworld";// 生成类的文件名,否则默认生成的类名为proto文件名的驼峰命名option java_outer_classname = "HelloWorldProto";// 定义的所有消息、枚举和服务生成对应的多个类文件,而不是以内部类的形式出现option java_multiple_files = false;// greeting服务定义service Greeter {  // sayHello方法,格式为"方法名 请求参数 返回参数"  rpc SayHello (HelloRequest) returns (HelloReply) {}  // 另一个sayHello方法  rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}}// 方法请求,包含用户名message HelloRequest {  string name = 1;}// 方法响应,包含响应的消息message HelloReply {  string message = 1;}4.执行命令行

在Protobuf下新建java目录,
用于保存生成的Java代码。

首先生成消息对象:
protoc-3.12.0-windows-x86_64.exe --java_out=java --proto_path=proto proto/helloworld.proto
然后生成GRPC接口:
protoc-3.12.0-windows-x86_64.exe --plugin=protoc-gen-grpc-java=protoc-gen-grpc-java-1.32.1-windows-x86_64.exe --grpc-java_out=java --proto_path=proto proto/helloworld.proto
生成目录和文件结果如下:
Protobuf|-- java|   `-- com|       `-- asiainfo|           `-- yuwen|               `-- grpc|                   `-- helloworld|                       |-- GreeterGrpc.java|                       `-- HelloWorldProto.java|-- proto|   `-- helloworld.proto|-- protoc-3.12.0-windows-x86_64.exe`-- protoc-gen-grpc-java-1.32.1-windows-x86_64.exe5.进阶使用

Protobuf生成Java代码的方法,
不仅可以使用命令行,
也可以通过Maven的方式,
更加简介和方便,
其实Maven底层也是使用的命令行,
具体方法请参考:
Protobuf生成Java代码(Maven)
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 17:58 , Processed in 0.087029 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表