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

使用Dagger与kapt编译项目时抛出InvocationTargetException异常

问题根因

你遇到的app:kaptDebugKotlin任务失败、外层抛出java.lang.reflect.InvocationTargetException、底层提示Unsupported metadata version的问题,和Dagger注入业务逻辑无关,是构建链版本不兼容导致的:kapt执行Dagger注解处理器时,无法解析当前Kotlin编译器生成的类元数据。外层的反射调用异常是kapt包装注解处理器执行错误的通用壳,不需要单独排查,核心解决版本对齐问题即可。

解决步骤

按以下顺序排查修复,90%以上的同类问题可在第二步解决:

  • 对齐Kotlin与kapt插件版本
    检查根目录build.gradle(或版本目录libs.versions.toml)中声明的org.jetbrains.kotlin.android插件版本,确保和app模块build.gradle中kotlin-kapt插件使用的Kotlin版本完全一致,禁止跨大版本混用(比如Kotlin插件用1.9.0,kapt残留1.5.x版本配置)。
  • 匹配Dagger版本与Kotlin的兼容区间
    你参照的老教程大概率使用了过时的Dagger旧版本,旧版本Dagger的注解处理器无法识别高版本Kotlin生成的元数据格式,直接将app模块中Dagger相关依赖调整到对应兼容区间即可:
    • Kotlin 1.4 ~ 1.5:使用Dagger 2.38 ~ 2.42
    • Kotlin 1.6 ~ 1.7:使用Dagger 2.43 ~ 2.48
    • Kotlin 1.8 ~ 2.0:使用Dagger 2.49及以上最新稳定版
      注意dagger-compiler注解处理器必须用kapt配置引入,不要写成implementation/compileOnly。
  • 清理缓存后重新构建
    版本修改完成后,先执行./gradlew clean清理旧构建产物,如果还是报错就执行IDE的File -> Invalidate Caches...清除缓存重启,再重新触发编译。
避坑说明
  • 不要在同一个模块混用kapt和ksp处理Dagger注解,全项目统一注解处理方式即可;如果改用ksp,需要额外引入Dagger的ksp适配依赖,且ksp版本必须和Kotlin版本严格一一对应。
  • 如果项目同时接入了Hilt,Hilt版本必须和自带的Dagger版本、Kotlin版本对齐,手动声明的Dagger版本不要和Hilt传递依赖的Dagger版本产生冲突,否则也会触发同类元数据解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:06:18