You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:33:14