使用protoc生成gRPC代码时为何缺失GreeterGrpc.java文件?
gRPC GreeterGrpc.java 缺失原因及解决办法
你的protoc命令缺少gRPC服务代码的输出参数,这是导致GreeterGrpc.java未生成的核心原因。
Gradle的com.google.protobuf插件会自动处理两类代码生成逻辑:
- 消息结构类:由protoc原生Java生成器负责,对应命令中的
--java_out参数 - gRPC服务桩代码:由
protoc-gen-grpc-java插件单独生成,需要通过--grpc-java_out参数指定输出目录
你当前的命令仅指定了--java_out,只触发了消息类的生成,并未触发grpc-java插件的服务代码生成流程,因此GreeterGrpc.java不会被创建。
修正后的protoc命令
同时生成消息类和gRPC服务代码,需补充--grpc-java_out参数,示例命令如下:
protoc --plugin=protoc-gen-grpc-java --java_out=. --grpc-java_out=. .\src\main\proto\helloworld.proto
参数说明
--java_out=.:指定消息相关Java文件(如HelloRequest.java)的输出根目录,可按需修改路径--grpc-java_out=.:指定gRPC服务代码(即GreeterGrpc.java)的输出根目录,建议和消息类输出目录保持一致,或指定到项目源码目录(如./src/main/java)
执行修正后的命令后,就能得到与Gradle插件生成完全一致的文件结构,包含缺失的GreeterGrpc.java。
内容的提问来源于stack exchange,提问作者victorli
相关产品推荐
相关产品推荐

