Windows10下protoc生成gRPC Java代码报路径相对化失败错误
报错原因
核心问题是protoc编译命令的参数格式写错了:java_out参数前漏了规定的双横杠--前缀。protoc的规则是所有编译参数都要带--开头,没有这个前缀的内容会被识别为待编译的proto文件路径,所以程序会去找名叫java_out=C:\proto\的文件,找不到就抛出你看到的错误。
另外还有两处不影响当前报错但后续容易出问题的笔误:
- 存放proto文件的子文件夹名拼写成了
empoloyee,正确拼写是employee - proto里的响应消息名写成了
EmployeeeResponse,多了一个字母e,后续写业务代码调用时很容易因为拼错名找不到类
修复方案
直接修改run.bat里的编译命令,给java_out补上--前缀就行,修正后的可直接运行的命令如下:
set PROTO_FOLDER_PATH=C:\proto\empoloyee set PROTO_PLUGIN_PATH=C:\proto\protoc-gen-grpc-java-1.47.0-windows-x86_64.exe set OUTPUT_DIR=C:\proto protoc --proto_path=%PROTO_FOLDER_PATH% --plugin=protoc-gen-grpc-java=%PROTO_PLUGIN_PATH% --grpc-java_out=%OUTPUT_DIR% --java_out=%OUTPUT_DIR% %PROTO_FOLDER_PATH%\employee.proto
运行修正后的命令,就会在C:\proto目录下,按照你在proto里配置的ir.farshad.services包名,生成对应的Java消息类、gRPC服务绑定代码。
内容的提问来源于stack exchange,提问作者Farshad Fallah
相关产品推荐
相关产品推荐

