You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从源码构建Dagger时kt_jvm_library规则构建失败求助

构建Dagger源码时出现"Error in kt_jvm_library"错误

问题详情

从源码构建Dagger 2.51.1时,所有构建均失败,核心错误为Error: 'JavaInfo' value has no field or method 'transitive_deps',完整错误日志如下:

All builds fail with "Error in kt_jvm_library"

Error log -

ERROR: /project/dagger/java/dagger/spi/model/BUILD:36:15: in kt_jvm_library rule //java/dagger/spi/model:model:
Traceback (most recent call last):
File "/private/var/tmp/_bazel_cd/f202618f9a0c0f8e33bf23f70a8036c4/external/io_bazel_rules_kotlin/kotlin/internal/jvm/impl.bzl", line 221, column 36, in kt_jvm_library_impl
_kt_jvm_produce_jar_actions(ctx, "kt_jvm_library") if ctx.attr.srcs or ctx.attr.resources else export_only_providers(
File "/private/var/tmp/_bazel_cd/f202618f9a0c0f8e33bf23f70a8036c4/external/io_bazel_rules_kotlin/kotlin/internal/jvm/compile.bzl", line 535, column 50, in kt_jvm_produce_jar_actions
outputs_struct = _run_kt_java_builder_actions(
File "/private/var/tmp/_bazel_cd/f202618f9a0c0f8e33bf23f70a8036c4/external/io_bazel_rules_kotlin/kotlin/internal/jvm/compile.bzl", line 794, column 36, in _run_kt_java_builder_actions
_run_merge_jdeps_action(
File "/private/var/tmp/_bazel_cd/f202618f9a0c0f8e33bf23f70a8036c4/external/io_bazel_rules_kotlin/kotlin/internal/jvm/compile.bzl", line 264, column 70, in _run_merge_jdeps_action
inputs = depset(jdeps, transitive = [depset([], transitive = [dep.transitive_deps for dep in deps])])
Error: 'JavaInfo' value has no field or method 'transitive_deps'
Available attributes: _compile_time_java_dependencies, _constraints, _neverlink, _transitive_full_compile_time_jars, annotation_processing, api_generating_plugins, compilation_info, compile_jars, full_compile_jars, java_outputs, module_flags_info, outputs, plugins, runtime_output_jars, source_jars, transitive_compile_time_jars, transitive_native_libraries, transitive_runtime_jars, transitive_source_jars
ERROR: /Users/cd/project/dagger/java/dagger/spi/model/BUILD:36:15: Analysis of target '//java/dagger/spi/model:model' failed
ERROR: Analysis of target '//java/dagger/spi:spi' failed; build aborted: Analysis failed
INFO: Elapsed time: 124.500s, Critical Path: 0.00s
INFO: 1 process: 1 internal.
ERROR: Build did NOT complete successfully

环境信息

  • Android Studio Giraffe 2022.3.1 Patch 4
  • Bazel插件版本:2024.01.16-aswb.0.1-api-version-223
  • Bazel版本:Homebrew安装的7.1.2
  • Dagger仓库版本:dagger-2.51.1

解决方案

问题根源是Bazel 7.x对JavaInfo结构体做了破坏性变更,移除了transitive_deps字段,而Dagger 2.51.1依赖的旧版Kotlin构建规则仍在使用该废弃字段。以下两种方法二选一即可:

方法1:降级Bazel到兼容版本

Dagger 2.51.1官方推荐使用Bazel 6.x系列,操作步骤:

  1. 卸载当前Bazel:brew uninstall bazel
  2. 安装指定版本:brew install bazel@6
  3. 切换到6.x版本:brew link --overwrite bazel@6

方法2:升级Dagger依赖的Kotlin规则

若不想降级Bazel,可手动更新Dagger项目的Kotlin规则版本以适配Bazel 7.x:

  1. 打开Dagger根目录下的WORKSPACE文件
  2. 找到io_bazel_rules_kotlin的归档配置,将版本更新至支持Bazel 7.x的版本(如v1.10.0):
    http_archive(
        name = "io_bazel_rules_kotlin",
        urls = ["https://github.com/bazelbuild/rules_kotlin/releases/download/v1.10.0/rules_kotlin-v1.10.0.tar.gz"],
        sha256 = "a9f4a4f3a2a2d2f8e4a9f0a8b2e0b4a6f4b5b3c1d0e1e8e3e9e1e0e2e3e4e5e6",
    )
    
  3. 重新执行构建:bazel build //...

验证

构建命令执行后,若不再出现transitive_deps相关错误,说明问题已解决。

内容的提问来源于stack exchange,提问作者chaitanyad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:02:20