scala - 错误:对象服务不是 com.twitter.finagle 包的成员 - 在构建文件中定义 Bazel 依赖项,Scala finagle
问题描述
我试图将 finagle-http 库作为外部 maven 依赖项添加到我的新 bazel 项目中。但得到以下错误。我假设我在没有完全理解它的情况下在创建构建时做错了。努力学习。感谢您对此的任何帮助。
error: object Service is not a member of package com.twitter.finagle
error: object util is not a member of package com.twitter
error: type Request is not a member of package com.twitter.finagle.http
error: object Response is not a member of package com.twitter.finagle.http
error: Symbol 'type com.twitter.finagle.Client' is missing from the classpath. This symbol is required by 'object com.twitter.finagle.Http'.
error: not found: value Await
相同的代码正在使用 sbt。下面是代码。
import com.twitter.finagle.{Http, Service}
import com.twitter.finagle.http
import com.twitter.util.{Await, Future}
object HelloWorld extends App {
val service = new Service[http.Request, http.Response] {
def apply(req: http.Request): Future[http.Response] =
Future.value(http.Response(req.version, http.Status.Ok))
}
val server = Http.serve(":8080", service)
Await.ready(server)
}
工作区文件
maven_install(
artifacts = [
"org.apache.spark:spark-core_2.11:2.4.4",
"org.apache.spark:spark-sql_2.11:2.4.1",
"org.apache.spark:spark-unsafe_2.11:2.4.1",
"org.apache.spark:spark-tags_2.11:2.4.1",
"org.apache.spark:spark-catalyst_2.11:2.4.1",
"com.twitter:finagle-http_2.12:21.8.0",
],
repositories = [
"https://repo.maven.apache.org/maven2/",
"https://repo1.maven.org/maven2/",
]
)
构建文件
load("@io_bazel_rules_scala//scala:scala.bzl", "scala_binary")
package(default_visibility = ["//visibility:public"])
scala_binary(
name="helloworld",
main_class="microservices.HelloWorld",
srcs=[
"Main.scala",
],
deps = ["spark],
)
java_library(
name = "spark",
exports = [
"@maven//:com_twitter_finagle_http_2_12_21_8_0",
],
)
在我最初的 sbt 项目中工作的 SBT 依赖项
libraryDependencies += "com.twitter" %% "finagle-http" % "21.8.0"
解决方案
发现了这个问题,与 sbt 不同,在 bazel 中我已经单独添加了相关的依赖项。我修改了工作区,如下所示。
maven_install(
artifacts = [
"com.twitter:finagle-http_2.12:21.8.0",
"com.twitter:util-core_2.12:21.8.0",
"com.twitter:finagle-core_2.12:21.8.0",
"com.twitter:finagle-base-http_2.12:21.8.0",
"com.fasterxml.jackson.module:jackson-module-scala_2.12:2.11.2",
"com.fasterxml.jackson.core:jackson-databind:2.11.2",
],
repositories = [
"https://repo.maven.apache.org/maven2/",
"https://repo1.maven.org/maven2/",
]
构建文件——
java_library(
name = "finagletrial",
exports = [
"@maven//:com_twitter_finagle_http_2_12_21_8_0",
"@maven//:com_twitter_util_core_2_12_21_8_0",
"@maven//:com_twitter_finagle_core_2_12_21_8_0",
"@maven//:com_twitter_finagle_base_http_2_12_21_8_0",
"@maven//:com_fasterxml_jackson_module_jackson_module_scala_2_12_2_11_2",
"@maven//:com_fasterxml_jackson_core_jackson_databind_2_11_2"
],
推荐阅读
- c++ - 如何检查我打开的文件是否用于在 c 中读取或写入
- c# - 如何在 ASP.NET Core 3.1 MVC 中挂钩视图创建并更改模型和视图名称?
- javascript - 带有图像和圆形进度条的圆形按钮
- python - 未执行 Aurora 目标的 AWS Glue Pre 和 Post 操作
- vba - 使用 Outlook 阅读 RSS 项目。如果网页有“找不到页面”,想要删除项目
- angular - 如何将模板引用变量传递给子组件
- python - Pygame窗口底角的白色标签
- python - 创建具有唯一对象实例的 NumPy
- java - 无法构建 Spring Boot Admin Client
- javascript - 数据表的 json 问题