Java Spring Boot项目中gRPC服务类未生成问题求助
问题分析与解决方案
你的问题核心是gRPC服务类未生成,但消息类正常生成,结合你的配置和环境,可从以下几个方向排查修复:
1. 优先解决版本兼容性问题
你使用的grpc-server-spring-boot-starter版本2.15.0.RELEASE与Spring Boot 3.3.2不兼容:
- net.devh的gRPC Spring Boot Starter中,
2.x系列仅适配Spring Boot 2.x - Spring Boot 3.x必须搭配
3.x系列的starter版本
修复步骤:
替换grpc starter依赖为兼容版本(需与grpc-java版本匹配,示例用3.4.0):
<dependency> <groupId>net.devh</groupId> <artifactId>grpc-server-spring-boot-starter</artifactId> <version>3.4.0</version> </dependency>
2. 升级老旧的protobuf-maven-plugin
你使用的protobuf-maven-plugin版本0.6.1发布于2017年,无法很好适配高版本的protoc(3.25.3)和grpc-java(1.62.2),会导致服务类生成逻辑失效。
修复步骤:
将插件版本升级至0.8.18(当前稳定新版本):
<plugin> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>0.8.18</version> <!-- 原有配置保持不变 --> </plugin>
3. 执行完整的Maven编译命令
确保执行包含清理、编译的完整命令,触发插件的compile和compile-custom目标(后者负责生成服务类):
mvn clean compile
仅执行compile可能复用旧的生成文件,无法重新触发服务类生成逻辑。
4. 验证生成文件路径
服务类会生成在target/generated-sources/protobuf/grpc-java/nasta/grpc/welcome目录下,对应的文件是SayWelcomeServiceGrpc.java(包含客户端Stub和服务端抽象实现类)。
如果文件存在但IDE未识别,需手动将target/generated-sources/protobuf目录标记为IDE的源码根目录。
可选:proto文件规范优化
你的proto中Welcome和WelcomeMessage结构完全重复,可合并简化:
syntax = "proto3"; option java_multiple_files = true; option java_package = "nasta.grpc.welcome"; message Message { int32 id = 1; string name = 2; } message WelcomeResponse { string welcome_name = 1; } service SayWelcomeService { rpc SayWelcome(Message) returns (WelcomeResponse){}; }
内容的提问来源于stack exchange,提问作者full
相关产品推荐
相关产品推荐

