You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在命令行向protoc传递Java包名及外部类名选项?

通过protoc命令行指定Java包名和外部类名(无需修改.proto文件)

完全可以通过protoc的命令行参数指定java_package和java_outer_classname,不用修改供应商提供的原始.proto文件,具体用法如下:

  • 指定Java包名:使用--java_opt=package=<目标包名>参数
  • 指定外部类名:使用--java_opt=outer_classname=<目标类名>参数

示例命令

假设你要处理的proto文件是person.proto,希望生成的Java代码包名为com.example.protobuf,外部类名为PersonProto,输出目录为./generated,完整命令如下:

protoc --java_out=./generated person.proto --java_opt=package=com.example.protobuf --java_opt=outer_classname=PersonProto

也可以把多个java_opt参数合并成一个,用逗号分隔:

protoc --java_out=./generated person.proto --java_opt=package=com.example.protobuf,outer_classname=PersonProto

这样生成的Java代码效果和在.proto文件中直接设置对应选项完全一致,后续供应商更新.proto文件时,你直接用新文件重新执行命令即可,无需做任何修改。

内容的提问来源于stack exchange,提问作者Guntram Blohm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:44:53