使用protobuf-maven-plugin生成proto代码出现错误

错误描述

使用protobuf-maven-plugin生成proto代码时,出现类似错误:
“xxx” is already defined in file “xxx.proto”

[ERROR] PROTOC FAILED: gateway/user.proto:19:9: "UserService" is already defined in file "common/user.proto".
[ERROR] E:\Projects\ranger2\game-server\game-proto\src\main\proto\common\user.proto [0:0]: gateway/user.proto:19:9: "UserService" is already defined in file "common/user.proto".

proto文件

为了便于理解错误,给出现错误时的proto文件内容。

两个proto文件位于不同的目录。
proto文件目录
common目录下的proto内容。
common目录下的proto
gateway目录下的proto内容。
gateway目录下的proto

问题解决方案

给proto文件设置package属性。
也就是关闭这两个文件的第三行注释。
package game.proto.common.user;
package game.proto.gateway.user;

成功运行

plugin
success

思绪

以前遇到过这个问题时稍微查了一下资料(没有找出原因,觉得是自己将proto文件存放在同一个目录下导致的),当时比较着急完成功能需求,就手动改了冲突的名字。
没想到今天又遇到了这个问题,所以就往命名空间方向查找问题。

参考

https://stackoverflow.com/questions/62911250/why-i-am-getting-proto-class-is-is-already-defined-in-file

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值