对象不是包的成员

object is not a member of package

我正在尝试使用 scalaPB 的 official example. The scala code is found on their gitHub

来实现简单的服务器-客户端应用程序

但是,当我尝试 运行 它时,当我尝试使用 import io.grpc.examples.helloworld.helloworld.{foo}.

导入任何内容时,我总是收到错误 object helloworld is not a member of package io.grpc.examples.helloworld

我的 build.sbt 文件:

name := "Distributed sorting"
version := "0.1"
scalaVersion := "2.13.7"
libraryDependencies ++= Seq(
    "io.grpc" % "grpc-netty" % scalapb.compiler.Version.grpcJavaVersion,
    "com.thesamet.scalapb" %% "scalapb-runtime-grpc" % scalapb.compiler.Version.scalapbVersion
)

Compile / PB.targets := Seq(
  scalapb.gen() -> (Compile / sourceManaged).value / "scalapb"
)

我的文件如下所示:

├── build.sbt
├── project
│   ├── build.properties
│   ├── scalapb.sbt
│   └── target
        ├── ...
└── src/main
    ├── protobuf
        ├── hello.proto
    └── scala/io/grpc/examples/helloworld
        ├── HelloWorldClient.scala
        └── HelloWorldServer.scala

首先,我推荐使用 Akka gRPC rather than using ScalaPB directly. The documentation is pretty clear and there is a giter8 config,它可用于使用 sbt new 创建示例项目。

其次,gitHub中的代码看起来不像是官方的示例代码。它说它已“从 grpc java 翻译而来”,这可能不是您想要的。

最后,关于您遇到的具体问题,scalaPB 生成的存根位于一个包中,其名称在 proto 文件中给出。示例文件有

package com.example.protos

因此存根将位于 com.example.protos.Greeter