Я пытаюсь реализовать простое серверно-клиентское приложение, используя официальный пример scalaPB. Код scala находится на их gitHub

Однако, когда я пытаюсь запустить его, я все время получаю сообщение об ошибке object helloworld is not a member of package io.grpc.examples.helloworld, когда пытаюсь импортировать что-либо с помощью import io.grpc.examples.helloworld.helloworld.{foo}.

Мой файл 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
0
Bassusour 23 Ноя 2021 в 09:02

1 ответ

Лучший ответ

Во-первых, я рекомендую использовать Akka gRPC вместо прямого использования ScalaPB. . Документация довольно ясна, и есть конфигурация giter8, которую можно используется для создания образца проекта с использованием sbt new.

Во-вторых, код в этом gitHub не похож на официальный пример кода. В нем говорится, что он был «переведен с grpc java», что, вероятно, не то, что вам нужно.

Наконец, по конкретной проблеме, с которой вы сталкиваетесь, заглушки, созданные scalaPB, находятся в пакете, имя которого указано в файле proto. В файле примера есть

package com.example.protos

Так что заглушки будут в com.example.protos.Greeter.

1
Tim 23 Ноя 2021 в 10:20