java - 巴泽尔斯卡拉 "failed: Worker process did not return a WorkResponse"

标签 java scala jvm bazel

我是 Bazel 的初学者,我需要从 sbt 迁移.我用 Scala Rules构建我的应用程序。
我使用具有以下别名的以下依赖项(以防止拼写错误):


别名
团体
Artifact
版本

borer_coreio.bulletborer-core_2.121.6.3borer_derivationio.bulletborer-derivation_2.121.6.3scala_loggingcom.typesafe.scala-loggingscala-logging_2.123.9.2logbackch.qos.logbacklogback-classic1.2.3taggingcom.softwaremill.commontagging_2.122.2.1ujsoncom.lihaoyiujson_2.121.2.2

所有这些依赖项将由 JVM External Rules 安装.在 Workspace 中看起来是这样的:

dp_deps = [
    borer_core,
    borer_derivation,
    scala_logging,
    logback,
    tagging,
    ujson,
]

maven_install(
    name = "maven",
    artifacts = dp_deps,
    repositories = ["http://repo1.maven.org/maven/"],
    fetch_sources = True
)
然后我尝试构建一个 jarscala_library在我的 BUILD文件。看起来是这样的:
scala_library(
    name = "some_lib",
    srcs = glob(["some_lib/src/main/**/*.scala"]),
    unused_dependency_checker_mode = 'warn',
    deps = [
        "@maven//:io_bullet_borer_core_2_12",
        "@maven//:io_bullet_borer_derivation_2_12",
        "@maven//:com_typesafe_scala_logging_scala_logging_2_12",
        "@maven//:ch_qos_logback_logback_classic",
        "@maven//:com_softwaremill_common_tagging_2_12",
        "@maven//:com_lihaoyi_ujson_2_12"
    ]
)
然后我尝试使用以下命令构建它:
bazel build //test-dir:some_lib --verbose_failures
我收到以下日志错误:
错误:
ERROR: /Users/<edited>/test-dir/BUILD.bazel:136:14: scala //test-dir:some_lib failed: Worker process did not return a WorkResponse:
日志:
---8<---8<--- Start of log snippet, file at /private/var/tmp/_bazel_<edited>/07059176926c1842b8d4e633b0ddf1f4/bazel-workers/worker-7-Scalac.log ---8<---8<---
[... truncated ...]
scala.tools.nsc.typechecker.Macros$MacroExpander.expand(Macros.scala:622)
    at scala.tools.nsc.typechecker.Macros$MacroExpander.apply(Macros.scala:609)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand(Macros.scala:784)
    at scala.tools.nsc.typechecker.Macros.standardMacroExpand$(Macros.scala:782)
    at scala.tools.nsc.Global$$anon$4.standardMacroExpand(Global.scala:480)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$10.default(AnalyzerPlugins.scala:457)
    at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$10.default(AnalyzerPlugins.scala:454)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.invoke(AnalyzerPlugins.scala:411)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand(AnalyzerPlugins.scala:454)
    at scala.tools.nsc.typechecker.AnalyzerPlugins.pluginsMacroExpand$(AnalyzerPlugins.scala:454)
    at scala.tools.nsc.Global$$anon$4.pluginsMacroExpand(Global.scala:480)
    at scala.tools.nsc.typechecker.Macros.macroExpand(Macros.scala:773)
    at scala.tools.nsc.typechecker.Macros.macroExpand$(Macros.scala:766)
    at scala.tools.nsc.Global$$anon$4.macroExpand(Global.scala:480)
    at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1164)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1227)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1200)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1220)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5747)
    at scala.tools.nsc.typechecker.Typers$Typer.typedValDefImpl(Typers.scala:5949)
    at scala.tools.nsc.typechecker.Typers$Typer.typedValDef(Typers.scala:2056)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5651)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5733)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:5797)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3357)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3357)
    at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:2017)
    at scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1883)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5654)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5733)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:5797)
    at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3357)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3357)
    at scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:5363)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5656)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5733)
    at scala.tools.nsc.typechecker.Analyzer$typerFactory$TyperPhase.apply(Analyzer.scala:115)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:451)
    at scala.tools.nsc.typechecker.Analyzer$typerFactory$TyperPhase.run(Analyzer.scala:104)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1501)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1485)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1478)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1604)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:47)
    at scala.tools.nsc.MainClass.doCompile(Main.scala:32)
    at scala.tools.nsc.Driver.process(Driver.scala:67)
    at io.bazel.rulesscala.scalac.ScalacWorker.compileScalaSources(ScalacWorker.java:226)
    at io.bazel.rulesscala.scalac.ScalacWorker.work(ScalacWorker.java:70)
    at io.bazel.rulesscala.worker.Worker.persistentWorkerMain(Worker.java:92)
    at io.bazel.rulesscala.worker.Worker.workerMain(Worker.java:46)
    at io.bazel.rulesscala.scalac.ScalacWorker.main(ScalacWorker.java:37)
Caused by: java.lang.ClassNotFoundException: io.bullet.borer.deriver.Deriver
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 75 more
---8<---8<--- End of log snippet, 2207 chars omitted ---8<---8<---
Target //test-dir:some_lib failed to build
我该如何解决这个错误? io.bullet.borer.deriver.Deriver位于依赖项和类路径中,但 JVM 看不到它。无法记录沙箱的类路径,因为 bazel 无法获取 WorkerResponce .请帮帮我😅。

最佳答案

我找到了问题所在。默认 scala_toolchaindirect模式。所以它只能看到在 deps 中定义的依赖项scala_library 的归档或 scala_macro_library .所以有两种方案可以解决这个问题:

  • 将所有需要的直接依赖添加到 deps大批。
  • 或定义自己的 scala_toolchain - docs - example

  • 因此,对于当前示例,我们需要定义所有直接依赖项。顺便说一句,当你做 maven_install 时它们已经被下载了。 .现在我们只需要引用它们:
    对于 borer额外的依赖将是:
  • @maven//:io_bullet_borer_deriver_2_12

  • 对于 scala_logging我们需要添加:
  • @maven//:org_slf4j_slf4j_api

  • 而对于 ujson我们需要:
  • @maven//:com_lihaoyi_geny_2_12
  • @maven//:com_lihaoyi_upickle_core_2_12

  • Github example repository 的所有修复在 fix 下的存储库中可用分支。
  • Borer fix
  • Spark fix
  • 关于java - 巴泽尔斯卡拉 "failed: Worker process did not return a WorkResponse",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66640581/

    相关文章:

    java - 如何使用 libGdx 项目弹跳球

    java - postman REST 客户端原始 json 数据如何在 POST、PUT 调用中发送到服务器?

    java - 如何以正确的方式创建 Scala 项目?

    java - cgroup v2 和 java 8

    java - micronaut 的 @AuthenticationPrincipal 替代方案是什么?

    java - jdk 9 中弃用的 jnlp 和 java web 启动技术 - 替代方案?

    安装 Mac OS X Sierra (Mac OS 10.12) 后 Eclipse scala-ide 将无法启动

    scala - 将自定义类型从 F# 转换为 Scala

    java - 为什么我的 Windows 突然遇到错误 'java.security.AccessControlException accessDeclaredMembers?

    java - 附加到已经运行的 JVM