【问题标题】:Cannot find symbol class "Generated" for Dagger 2找不到 Dagger 2 的符号类“已生成”
【发布时间】:2015-04-22 00:23:46
【问题描述】:

我刚开始使用Dagger 2 进行依赖注入。当我启动我的modules、components 并尝试构建我的应用程序时,gradle 抛出了错误

Error:(4, 24) error: cannot find symbol class Generated

我对其进行了深入研究,发现错误出现在Dagger 生成的类之一中以执行DI。缺少的特定类是javax.annotation.Generated,而引发错误的行是将Dagger 生成的类注释为@Generated("dagger.internal.codegen.ComponentProcessor")

This 问题有助于找到解决方案,即将javax 包添加为依赖项,方法是将compile 'org.glassfish:javax.annotation:10.0-b28' 行添加到我的gradle 构建文件中。这导致了成功的构建。

我的问题是,为什么没有将它添加为 Dagger 的传递依赖项,或者为什么没有其他人遇到这个特定问题(我假设是这样,因为我在这里找不到任何关于此的问题?

【问题讨论】:

  • 我遇到了同样的问题。我通过添加“解决”它: compile 'javax.annotation:jsr250-api:1.0' 我不确定为什么这仍然是一个问题,也不知道这是否是正确的解决方案。
  • 有关此问题的更多信息,您可以在此处阅读该主题:github.com/google/dagger/issues/95
  • @AlexFu - 太棒了!您介意将其发布为答案吗?

标签: java android dagger-2


【解决方案1】:

TL;DR 使用 Dagger >= 2.1

Alex 是对的,但是最好添加 JSR250 依赖而不是 GlassFish

provided 'javax.annotation:jsr250-api:1.0'

或最新的 gradle 插件:

compileOnly 'javax.annotation:jsr250-api:1.0'

【讨论】:

  • 仍然无法识别我生成的“Dagger”前缀组件?。它在一分钟前就这样做了!大声笑
  • 为什么jsr比glassfish注解好?
  • @IgorGanapolsky GlassFish 是一个应用程序服务器,因此注释库仅用于其目的。 JSR250 只是一个标准,仅包含一些用于一般用途的注释。
  • @IgorGanapolsky 因为这只是一个注释库,因此您可以在任何项目中使用它。 JSR250只是这个库中的一个传递依赖,你可以在这里查看:central.maven.org/maven2/org/glassfish/javax.annotation/3.1.1/…你的Android项目中肯定不需要javaee-api注解,但它也是GlassFish注解库的依赖。
  • @IgorGanapolsky 绝对不是。只需在 Android 项目中使用一个。
【解决方案2】:

阅读本文了解更多信息:https://github.com/google/dagger/issues/95

基本上,解决方案是做你已经做过的,包括 glassfish javax 注释库。

【讨论】:

  • 在 Dagger 2.14 中遇到了这个问题
  • @AchmadNaufalSyafiq 你是怎么解决的?我在 Dagger 2.16 中也面临同样的问题
【解决方案3】:

如果您的 JAVA_HOME 指向 JAVA 版本 9 或 10,就会发生这种情况。将 JAVA_HOME 切换到 Java 8 可以解决此问题,并且您将不需要额外的依赖。

【讨论】:

    【解决方案4】:

    我将我的 JVM 降级到 Java 8,并在使用 Dagger 2 的 Android 应用程序中成功运行 gradle build。

    【讨论】:

    • 这对我有用。
    【解决方案5】:

    今天的正确答案是使用大于2.1的dagger版本(因为@tomrozb提到的fix是2.1集成的)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-01
      • 1970-01-01
      相关资源
      最近更新 更多