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

ScalaPB生成代码报错:类型参数不符合GeneratedMessageCompanion边界要求

问题解决方案

该报错本质是ScalaPB编译工具版本、项目依赖的ScalaPB运行时版本、Protobuf版本三者不兼容,或生成代码的包路径不匹配导致,按以下步骤逐一排查即可解决:

  • 统一版本号对齐
    你当前使用的scalapbc工具版本为0.11.1,必须保证项目构建配置(sbt的build.sbt、maven的pom.xml等)中引入的scalapb-runtime依赖版本和工具版本完全一致,不能出现跨大版本混用的情况。以sbt配置为例,需要添加如下配置:

    libraryDependencies += "com.thesamet.scalapb" %% "scalapb-runtime" % "0.11.1" % ProtobufConfig
    

    同时你编译命令中指定的protobuf版本为3.5.1,要确保项目中引入的protobuf-java依赖版本也和该值完全一致。

  • 修正生成代码的包路径配置
    你proto文件中声明的包为protobuff,但生成代码中引用的类路径为protobuff.sample.embedtoRedis,是scalapbc默认将proto文件名作为了包后缀。如果需要固定包路径,可在proto文件头部添加自定义包配置:

    option scalapb.package = "com.huawei.utility.protobuff.embedtoRedis";
    

    直接指定生成代码的完整包名,避免类引用路径不匹配的问题。

  • 重新生成代码
    完成上述配置调整后,删除原有生成的Scala文件,重新执行编译命令生成新的代码即可。正常生成的embedtoRedis case类会自动继承scalapb.GeneratedMessage with scalapb.Message[embedtoRedis],满足泛型边界要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:45:03