使用grpc命令xxx.proto生成gRPC Java客户端接口

本文讲述了在使用grpc协议时遇到的问题,如protobuf插件编译错误,以及如何在Windows和Linux环境下通过protoc命令行生成Java代码,包括不同平台的插件路径设置。还提供了相关资源链接供读者参考。

基于开源项目:https://github.com/triton-inference-server/client/tree/main/src/grpc_generated/java

要实现grpc协议的通信,把grpc_service.proto进行映射
grpc_service.proto中的部分内容:

package inference;

//@@.. cpp:namespace:: inference

import "model_config.proto"

文件中import其他的proto文件,在IDE中用protobuf插件没法直接生成,一直提示如下信息:
 

[INFO] 
[INFO] --- protobuf-maven-plugin:0.6.1:compile (default-cli) @ grpc-java-demo ---
[INFO] Compiling 3 proto file(s) to D:\java\workspace\grpc-java-demo\target\generated-sources\protobuf\java
[ERROR] PROTOC FAILED: model_config.proto: File not found.
llm/grpc_service.proto:33:1: Import "model_config.proto" was not found or had errors.
llm/grpc_service.proto:875:3: "ModelConfig" is not defined.
[ERROR] D:\java\workspace\grpc-java-demo\src\main\proto\llm\grpc_service.proto [0:0]: model_config.proto: File not found.
llm/grpc_service.proto:33:1: Import "model_config.proto" was not found or had errors.
llm/grpc_service.proto:875:3: "ModelConfig" is not defined.
[ERROR] D:\java\workspace\grpc-java-demo\src\main\proto\llm\health.proto [0:0]: model_config.proto: File not found.
llm/grpc_service.proto:33:1: Import "model_config.proto" was not found or had errors.
llm/grpc_service.proto:875:3: "ModelConfig" is not defined.
[ERROR] D:\java\workspace\grpc-java-demo\src\main\proto\llm\model_config.proto [0:0]: model_config.proto: File not found.
llm/grpc_service.proto:33:1: Import "model_config.proto" was not found or had errors.
llm/grpc_service.proto:875:3: "ModelConfig" is not defined.

 通过cmd命令能运行但是没法生成最终需要的 GRPCInferenceServiceGrpc.java

于是尝试在linux环境去生成
命令:

protoc --plugin=protoc-gen-grpc-java=xxx/protoc-gen-grpc-java-1.0.3-linux-x86_64.exe --java_out=. --grpc-java_out=. --proto_path=. grpc_service.proto

 xxx换成自己服务器上protoc-gen-grpc-java-1.0.3-linux-x86_64.exe的路径

执行成功后查看生成的Java类

如果是windows环境下,生成Java类和xxxGrpc.java命令:

protoc --proto_path=. --java_out=. --plugin=protoc-gen-grpc-java=D:\java\javaRepository\io\grpc\protoc-gen-grpc-java\1.53.0\protoc-gen-grpc-java-1.53.0-windows-x86_64.exe --grpc-java_out=. grpc_service.proto




关于grpc协议Java代码生成和学习的部分参考文章链接:
gRPC 官方文档中文版_V1.0 (oschina.net)
java/go grpc 生成 service - ifnk - 博客园 (cnblogs.com)
java使用protobuf-maven-plugin的插件编译proto文件_程序猿CKeen的博客-优快云博客
学点儿gRPC-从入门到放弃 | 朝·闻·道 (wuwenliang.net)
芋道 Spring Boot gRPC 入门 | 芋道源码 —— 纯源码解析博客 (iocoder.cn)
gRPC-Java:构建一个使用Java语言的gRPC工程_protoc-gen-grpc-java_文晓武的博客-优快云博客
java 生成grpc调用service_java grpc生成文件_了迹奇有没的博客-优快云博客
Protobuf语言指南——.proto文件语法详解-优快云博客

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值