我正在尝试将其他人用 Go 编写的 gRPC 接口集成到我的 Spring Boot 项目中。据我了解,该过程涉及使用 protoc 将 .proto 文件转换为 .java 文件,然后将其复制到 Java 项目中。之后,我尝试创建一个客户端并使用以下代码进行调用:
public class MyGrpcClient {
private final MyServiceGrpc.MyServiceBlockingStub blockingStub;
public MyGrpcClient() {
ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 50051)
.usePlaintext()
.build();
blockingStub = MyServiceGrpc.newBlockingStub(channel);
}
public MyResponse callRemoteService(MyRequest request) {
return blockingStub.myMethod(request);
}
}
但是,我注意到 protoc 生成的文件不包含类似于 MyServiceGrpc.MyServiceBlockingStub 类的任何内容。我想知道问题可能出在哪里以及可能导致此问题的原因。
我已经按照必要的步骤使用 protoc 生成 .java 文件,并且我已经检查了我的 Maven/Gradle 构建文件中是否包含必要的依赖项。我不确定为什么生成的文件中不存在 MyServiceGrpc.MyServiceBlockingStub 类。
任何有关如何排查和解决此问题的见解或建议将不胜感激。
提前感谢您的帮助!
您需要添加正确的成绩任务来解释gradle如何生成类。看这里作为例子: