Protobuf生成Java代码(命令行)
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, 否则使用默认的proto2
syntax = "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.exe
5.进阶使用
Protobuf生成Java代码的方法,
不仅可以使用命令行,
也可以通过Maven的方式,
更加简介和方便,
其实Maven底层也是使用的命令行,
具体方法请参考:Protobuf生成Java代码(Maven)
http://www.taodudu.cc/news/show-1250946.html
相关文章:
- Maven查看插件信息
- SpringBoot脚手架工程快速搭建
- SpringBoot集成MyBatis-Plus分页插件
- SNMP客户端工具MIB Browser
- PowerDesigner运行自定义VBS脚本,复制Name到Comment
- BitMap-BitSet(JDK1.8)基本使用入门
- IDEA查看Java类的UML关系图
- 30. 包含min函数的栈
- 35. 复杂链表的复制
- 58 - II. 左旋转字符串
- 03. 数组中重复的数字
- 53 - II. 0~n-1中缺失的数字
- 04. 二维数组中的查找
- 11. 旋转数组的最小数字
- 50. 第一个只出现一次的字符
- 32 - I. 从上到下打印二叉树
- 32 - II. 从上到下打印二叉树 II
- 32 - III. 从上到下打印二叉树 III
- 26. 树的子结构
- PostgreSQL数据库密码
- SpringBoot中使用Hibernate Validator校验工具类
- 28. 对称的二叉树
- 解决tomcat的undeploy
- 解决eclipse出现The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path
- 下载安装neo4j
- vue-drag-resize实线页面的拖拽与缩放
- 解决IDEA不能编译XML文件
- 播放视频和音频文件java
- 实时获取屏幕大小
- vue部分样式无法修改
Protobuf生成Java代码(命令行)相关推荐
- Protobuf生成Java代码(Maven)
1.说明 本文介绍Protobuf生成Java代码的方法, 配置对应的Maven插件, 把.proto文件生成Java代码. 2.插件配置 创建Maven工程grpc-compile, 修改pom.x ...
- M1 芯片maven 编译protobuf生成Java代码时,不能找到protoc-gen-grpc-java:exe:osx-aarch_64问题记录
背景描述: 换电脑后使在m1芯片编译protobuf的maven插件,来生成项目代码,发现无法下载到arm版本的插件,报错如图: 本地使用 brew install protobuf安装的最新版本: ...
- Java调用命令行+java生成词云
java调用命令行 package com.weizu.control; import java.io.BufferedReader; import java.io.InputStreamReader ...
- java调用命令行命令_Java命令行界面(第4部分):命令行
java调用命令行命令 我的Java命令行解析系列的第四部分介绍了Commandline ,它被描述为 "用于解析命令行参数的Java库",它"基于使用注释从命令行参数到 ...
- Java jar 命令行运行程序如何引用第三方依赖包
1 引言 mybatis generator 是一个命令行运行工具,可以生成 mybatis 代码.但它需要依赖数据库驱动 jar,否则会抛出 ClassNotFoundException 异常. E ...
- 【Android APT】注解处理器 ( 根据注解生成 Java 代码 )
文章目录 一.生成 Java 代码 二.实现 IButterKnife 接口 三.视图绑定主要操作 四.完整注解处理器代码 五.博客资源 Android APT 学习进阶路径 : 推荐按照顺序阅读 , ...
- java 调用命令行
java 调用命令行 JAVA Runtime类 java调用命令行 1. java调用终端,使用命令"javac" 2. java调用终端,使用javac编译helloWorld ...
- 介绍Java -D 命令行参数
介绍Java -D 命令行参数 我们在ide中执行程序经常需要设置VM参数,运行maven命令也需要设置参数,都是通过-D设置参数值.本文带你了解-D命令行参数. 1. 什么是Java -D命令行参数 ...
- JAVA 的命令行运行
作者:孙英鹏 撰写时间:2019年4月18日 JAVA 的命令行运行 今天要讲的是如何在命令行里进行打印运行.说明(此方法是老师的上课内容,我重新理解一遍) 首先创建一个文本文档,放在一个文件夹里,文 ...
最新文章
- 洛谷—— P1714 切蛋糕
- 图片压缩处理的一个可行解决方法【OC】
- java primary,java – 键’PRIMARY’的重复条目’string1-string2′
- mybatis报错,找不到对应mapper文件
- Apache专用笔记贴
- Java 10新特性解密
- ETL数据清洗工具总结
- 计算机个人职业生涯规划
- MindMeld中文文档--2.构建会话应用程序的不同方法[Different Approaches for Building Conversational Applications]
- 互联网广告表现形式有哪几种?
- http://dongxicheng.org/
- 清除“我的电脑”地址栏中的记录
- chrome浏览器下载速度慢问题解决办法
- win10家庭版调出组策略_普通用户选择哪个Win10系统版本?家庭版与专业版的对比介绍...
- 什么是Microsoft 365?
- Android人脸识别技术
- oracle表启用online,Oracle 表空间联机(online)与脱机(offline)
- 《c语言程序设计》网课答案,合理的服务半径是指居住区内达到居住区级公共服务设施的最大步行距离,一般为 800~1000 m,在地形起伏的地区还应适当减少。...
- GMT对应的SimpleDateFormat
- 基于pandas的粗糙集依赖度约简算法思路及实现