Рабочий процесс Scala bazel не вернул WorkResponse: - PullRequest
0 голосов
/ 21 сентября 2019

в BAZEL WORKSPACE файл, который я добавил:

maven_jar(name = "com_chuusai_shapeless", artifact = "com.chuusai:shapeless_2.12:2.3.3")

в BUILD файл также добавил эту зависимость:

deps = [
        "@com_chuusai_shapeless//jar"
    ],

В моем коде у меня есть:

import shapeless._

object ShapelessPG {

  def run() = {
    val emp = Employee("Maciej", 1, true)
    val iceCream = IceCream("Vanillia", 5, false)

    println(s"emp: $emp iceCream: $iceCream")

    val genEmp = Generic[Employee]
    val genIce = Generic[IceCream]

при использовании команды build, но при ее запуске возникла ошибка:

bazel build :App
DEBUG: /private/var/tmp/_bazel_userXYZ/daf16773bdceeb074610f489c565e309/external/io_bazel_rules_scala/scala/scala_maven_import_external.bzl:59:9: 'jar_sha256' is deprecated. Please use 'artifact_sha256'
INFO: Analyzed target //:App (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
ERROR: /Users/userXYZ/workspace/shapeless-bazel-zio-cats-playground/BUILD:3:1: scala //:App failed: Worker process did not return a WorkResponse:

---8<---8<--- Start of log snippet, file at /private/var/tmp/_bazel_userXYZ/daf16773bdceeb074610f489c565e309/bazel-workers/worker-3-Scalac.log ---8<---8<---

В файле журнала отображается:

Exception in thread "main" java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file shapeless/ReprTypes
        at java.lang.ClassLoader.defineClass1(Native Method)

из-за кода:

val genEmp = Generic[Employee]

, который прекрасно работает в sbt ..

Понятия не имею, как это исправить .. может кто-нибудь мне помочь?

спасибо!

1 Ответ

1 голос
/ 23 сентября 2019

maven_jar не использует транзитивные зависимости shapeless, такие как macro-compat и scala-library.Используйте rules_jvm_external вместо:

load("@rules_jvm_external//:defs.bzl", "maven_install")

maven_install(
    artifacts = [
        "com.chuusai:shapeless_2.12:2.3.3",
    ],
    repositories = [
        "https://jcenter.bintray.com",
    ],
)

Это автоматически разрешит и извлечет macro_compat и другие зависимости компиляции shapeless.Тогда в файле BUILD вы можете зависеть от shapeless следующим образом:

scala_library(
    name = "my_jar",
    srcs = # ...
    deps = [
        "@maven//:com_chuusai_shapeless_2_12",
    ],
)
...