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

使用gRPC Kotlin Codegen Plugin仅生成单个类的问题求助

问题排查:Kotlin版gRPC客户端代码仅生成单个类

我在Ubuntu系统中已安装protoc,按照官方教程生成Kotlin版gRPC客户端代码,但仅生成了一个类。使用的是protoc-gen-grpc-kotlin-1.3.0-jdk8.jar插件,先后尝试Java 8和17版本均无改善。Java类可正常生成,但Kotlin仅生成一个服务类。以下是相关文件及命令,恳请帮忙排查:

protoc-gen-grpc-kotlin.sh 脚本内容

#!/usr/bin/bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
java -jar $DIR/protoc-gen-grpc-kotlin-1.3.0-jdk8.jar $@

HelloService.proto 文件内容

syntax = "proto3";
package com.example.grpc;
option java_multiple_files = true;
//import "google/api/annotations.proto";

message HelloRequest {
    string firstName = 1;
    string lastName = 2;
}

message HelloResponse {
    string greeting =1;
}

service HelloService {
    rpc hello (HelloRequest) returns (HelloResponse) {}
//    rpc hello(HelloRequest) returns (HelloResponse){
//        option (google.api.http) = {
//            post: "/demo/item"
//            body: "*"
//        };
//    }
}

执行的protoc命令

protoc --kotlin_out=. --java_out=. --plugin=protoc-gen-kotlin=protoc-gen-grpc-kotlin.sh --proto_path=. HelloService.proto

排查要点

  • 命令参数缺失:当前命令只指定了--kotlin_out(用于生成Kotlin消息类),但gRPC客户端/服务端代码需要单独通过--grpc-kotlin_out参数触发生成,且要对应正确的插件映射。
  • 插件映射错误:你的脚本是protoc-gen-grpc-kotlin.sh,但命令里写的是protoc-gen-kotlin,应该把插件参数改为--plugin=protoc-gen-grpc-kotlin=protoc-gen-grpc-kotlin.sh,同时添加--grpc-kotlin_out=.参数。
  • 修正后的命令示例:
protoc \
  --kotlin_out=. \
  --java_out=. \
  --grpc-kotlin_out=. \
  --plugin=protoc-gen-grpc-kotlin=protoc-gen-grpc-kotlin.sh \
  --proto_path=. \
  HelloService.proto
  • 版本兼容性检查:确认protoc版本与grpc-kotlin 1.3.0插件匹配,建议使用protoc 3.20.x及以上版本。
  • 查看调试日志:执行命令时添加--grpc-kotlin_opt=debug参数,查看插件的详细输出,排查是否有隐藏的错误信息。

内容的提问来源于stack exchange,提问作者Rafael Souza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:52:48