【问题标题】:IncompleteAnnotationException: dagger.Provides missing element typeIncompleteAnnotationException: dagger.Provides 缺少元素类型
【发布时间】:2017-05-29 08:37:14
【问题描述】:

当我添加以下代码时出现错误:

@Singleton @Provides fun provideGson() : Gson {
    return Gson()
}

我真的不知道为什么。

【问题讨论】:

  • 你遇到了什么问题
  • No-repro 对我来说,你用的是哪个版本的匕首?
  • dagger2.0 当我添加代码时,错误是 IncompleteAnnotationException: dagger.Provides missing element type
  • 细节是当我在 android studio2.3.2 中创建一个使用 kotlin 的 android 应用程序时,即使添加 dagger 也可以,但是当我添加代码“@provides...”时,错误来了,我找到解决了,但没有更多的错误细节,

标签: java gson kotlin dagger


【解决方案1】:

将 Dagger 更新到 2.12(从 2.8)后一切正常

【讨论】:

  • daggerVersion = '2.28.1'
【解决方案2】:

我在我们的项目中遇到了完全相同的问题。在我的例子中,它是由 Dagger2 API 的变化引起的:Dagger2 开发人员 have removed type 来自注释 @Provides 的参数。

我不小心在旧版本的 Dagger2 编译器中使用了新的、不兼容的注解依赖版本(注解中没有 type 字段)。看起来,不像其他一些类型的二进制不兼容会导致各种运行时Errors,与不兼容注解的链接可能会在自省期间导致IncompleteAnnotationException

将 dagger2 编译器更新到与注解相同的版本已解决此问题。

【讨论】:

  • 您能详细说明一下吗?我正在将 Dagger 2 与 Kotlin (kapt) 一起使用,但无法确定要匹配哪两个版本。谢谢!
  • 好的,终于可以构建它了:在将 Dagger 更新到 2.12(从 2.8)之后,一切正常。谢谢,如果没有您的提示,我会浪费更多时间来解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2020-02-07
  • 2020-12-20
  • 1970-01-01
  • 2014-06-17
  • 2012-04-24
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多