嘿嘿,
我正在将一个宠物项目从 Akka 迁移到 Pekko(我正在学习 scala atm)。到目前为止,一切都很顺利,但有一件事我无法修复,那就是 grpc 插件。
在我的 build.sbt 中,我有以下内容:
ThisBuild / version := "0.1.0-SNAPSHOT"
ThisBuild / scalaVersion := "3.3.1"
lazy val root = (project in file("."))
.settings(
name := "IracingSetups",
)
...
val pekkoVersion = "1.0.2"
...
("org.apache.pekko" %% "pekko-actor" % pekkoVersion),
("org.apache.pekko" %% "pekko-actor-typed" % pekkoVersion),
("org.apache.pekko" %% "pekko-actor-testkit-typed" % pekkoVersion % "test"),
("org.apache.pekko" %% "pekko-grpc-runtime" % pekkoVersion),
...
enablePlugins(PekkoGrpcPlugin)
在我的plugins.sbt中我有:
resolvers += "Akka library repository".at("https://repo.akka.io/maven")
addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.1")
addSbtPlugin("org.apache.pekko" % "pekko-grpc-sbt-plugin" % "1.0.2")
一切似乎都可以下载,但是当我运行时:
compile
我得到:
IJ]compile
[info] Compiling 1 protobuf files to /Users/leon.weemen/Documents/Personal/IracingSetups/target/scala-3.3.1/pekko-grpc/main
[info] Generating Apache Pekko gRPC service interface for com.weemen.iracingsetups.IracingService
[info] Generating Apache Pekko gRPC client for com.weemen.iracingsetups.IracingService
[info] Generating Apache Pekko gRPC service handler for com.weemen.iracingsetups.IracingService
[info] compiling 13 Scala sources to /Users/leon.weemen/Documents/Personal/IracingSetups/target/scala-3.3.1/classes ...
[error] -- [E006] Not Found Error: /Users/leon.weemen/Documents/Personal/IracingSetups/target/scala-3.3.1/pekko-grpc/main/com/weemen/iracingsetups/DriveMessage.scala:167:28
[error] 167 |object DriveMessage extends scalapb.GeneratedMessageCompanion[com.weemen.iracingsetups.DriveMessage] {
[error] | ^^^^^^^
[error] | Not found: scalapb
[error] |
[error] | longer explanation available when compiling with `-explain`
之后,我按照安装说明进行操作,并将以下内容添加到 build.sbt 中
"com.thesamet.scalapb" %% "compilerplugin" % "0.11.11"
我添加了以下插件:
addSbtPlugin("com.thesamet" % "sbt-protoc" % "1.0.6")
当然,我确实通过以下方式设置了默认编译器选项:
Compile / PB.targets := Seq(
scalapb.gen() -> (Compile / sourceManaged).value / "scalapb"
)
这改善了我的情况,但是之前自动生成的一些类仍然不存在:
[IJ]compile
[info] Compiling 1 protobuf files to /Users/leon.weemen/Documents/Personal/IracingSetups/target/scala-3.3.1/src_managed/main/scalapb
[info] compiling 11 Scala sources to /Users/leon.weemen/Documents/Personal/IracingSetups/target/scala-3.3.1/classes ...
[error] -- [E006] Not Found Error: /Users/leon.weemen/Documents/Personal/IracingSetups/src/main/scala/com/weemen/iracingsetups/IracingSetupsGrpcImpl.scala:11:75
[error] 11 |class IracingSetupsGrpcImpl(using val typedSystem: ActorSystem[?]) extends IracingService {
[error] | ^^^^^^^^^^^^^^
[error] | Not found: type IracingService
我是否错过了一些非常明显的东西,或者过去与 Akka 一起使用的 Pekko 中的内容是否发生了变化。
addSbtPlugin("com.lightbend.akka.grpc" % "sbt-akka-grpc" % "2.1.6")
我总是习惯于开箱即用。
PS:我对 Scala 完全是个菜鸟。我也 100% 确定我是否为您提供了足够的信息供您使用
我完全忘记了这个问题,但我找到了罪魁祸首。我从不同的项目复制了很多东西,其中我错过的事情之一是交叉编译设置。在删除交叉编译设置后,我完全使用了 Scala3,我的问题就像太阳前的雪一样消失了。