ScalaPB gRPC项目运行报object is not a member of package错误求助
解决方案
- 修正导入路径
你当前报错的核心原因是导入路径多写了一层helloworld。默认ScalaPB会以proto文件的package声明作为生成代码的包路径:如果你hello.proto中声明了package io.grpc.examples.helloworld,生成的所有类都会直接放在该包下,直接使用以下导入即可:import io.grpc.examples.helloworld.{你需要的类名}
如果你要保留原有导入写法,可在build.sbt中修改PB.targets配置:
Compile / PB.targets := Seq( scalapb.gen(flatPackage = false) -> (Compile / sourceManaged).value / "scalapb" )
- 验证代码生成逻辑正常
先执行sbt clean compile命令,编译完成后检查target/scala-2.13/src_managed/main/scalapb/io/grpc/examples/helloworld路径下是否存在生成的Scala代码文件。如果没有生成,检查project/scalapb.sbt是否配置了正确的插件依赖:
addSbtPlugin("com.thesamet" % "sbt-protoc" % "1.0.6") libraryDependencies += "com.thesamet.scalapb" %% "compilerplugin" % scalapb.compiler.Version.scalapbVersion
- 检查proto文件配置
确认src/main/protobuf/hello.proto中正确声明了package配置,没有拼写错误:
syntax = "proto3"; package io.grpc.examples.helloworld; // 后续服务和消息定义
内容的提问来源于stack exchange,提问作者Bassusour
相关产品推荐
相关产品推荐

