protoc.exe java_protobuf——使用protoc.exe生成message文件

本文介绍了如何下载protoc.exe和protobuf-java-3.7.0.jar,编写test.proto文件,并通过编写批处理脚本generateProto.bat使用protoc.exe生成Java ProtoBuf消息文件。内容涵盖proto文件的选项设置、批处理脚本的编写和执行过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.下载protoc.exe和对应jar包

protoc.exe从https://github.com/protocolbuffers/protobuf/releases下载protoc-3.7.0-win64.zip,解压后bin目录下有对应proto.exe文件。

jar包去maven库中搜索protobuf-java-3.7.0.jar.

2.编写test.proto文件

package message;

option java_package = "com.test.message";

option java_multiple_files = true;//生成的message文件是多个,在一个包下,否则是一个包装类

option optimize_for = LITE_RUNTIME;

//Protocol Buffer定义三种优化级别SPEED/CODE_SIZE/LITE_RUNTIME。缺省情况下是SPEED。

//SPEED: 表示生成的代码运行效率高,但是由此生成的代码编译后会占用更多的空间。

//CODE_SIZE: 和SPEED恰恰相反,代码运行效率较低,但是由此生成的代码编译后会占用更少的空间,通常用于资源有限的平台,如Mobile。

//LITE_RUNTIME: 生成的代码执行效率高,同时生成代码编译后的所占用的空间也是非常少。这是以牺牲Protocol Buffer提供的反射功能为代价的。

// SPEED和LITE_RUNTIME相比,在于调试级别上,例如 msg.SerializeToString(&str) 在SPEED模式下会利用反射机制打印出详细字段和字段值,但是LITE_RUNTIME则仅仅打印字段值组成的字符串;

message RequestDataMsg1

{

required int32 id = 1;

optional string dataType = 2;

}

message StringIntegerMap

{

required string dataName = 1;

required int32 data = 2;

}

message ResponseDataMsg2

{

repeated StringIntegerMap dataMap = 1;

}

3.编写generateProto.bat,使用批处理执行protoc.exe --java_out=生成message的目录 test.proto 命令生成message文件(可以在命令行直接去protoc.exe所在目录执行)

@title generate message

@cd %~dp0

@rem %~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录

@rem current dir: %~dp0

%~d0

@echo batch generate proto

@rem @author chencan

@rem @echo off常用于开头,表示不显示所有的命令行信息,包括此句,相当于在每一行开头加 @

@rem 在批处理文件里面用 for,变量就用 %%

@rem set是对参数的定义,动态的话需要加上/p的条件

@echo off

set /p protoFile=please input filename:

if exist "%protoFile%" goto:process

rem call跳转到子批处理,并且不终止父批处理,start 是在新窗口执行

echo file not exist!

rem 再次执行当前批处理

call %0

:process

@echo file:"%protoFile%" exist!

@echo generating message,please wait...

@protoc.exe --java_out=../src %protoFile%

@echo generate success!

pause

goto:eof

proto文件,protoc.exe,generateProto.bat放在同一文件夹下,执行generateProto.bat脚本。

done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值