找不到 Dagger 2 的符号 class "Generated"
Cannot find symbol class "Generated" for Dagger 2
我刚开始使用 Dagger 2
进行依赖注入。当我启动 modules
、components
并尝试构建我的应用程序时,gradle
抛出错误
Error:(4, 24) error: cannot find symbol class Generated
我仔细研究了一下,发现错误出在 classes Dagger
生成的 DI
之一中。缺少的特定 class 是 javax.annotation.Generated
并且抛出错误的行是将 Dagger
生成的 class 注释为 @Generated("dagger.internal.codegen.ComponentProcessor")
的行
This 问题有助于找到解决方案,即通过将行 compile 'org.glassfish:javax.annotation:10.0-b28'
添加到我的 gradle 构建文件来将 javax
包添加为依赖项。这导致构建成功。
我的问题是,为什么没有将其添加为 Dagger
的传递依赖项,或者为什么没有其他人遇到过这个特定问题(我想是的,因为我在这里找不到任何关于这个?
阅读此内容了解更多信息:https://github.com/google/dagger/issues/95
基本上,解决方案是执行您已经完成的操作,包括 glassfish javax 注释库。
TL;DR 使用匕首 >= 2.1
Alex 是对的,但最好添加 JSR250 依赖项而不是 GlassFish
provided 'javax.annotation:jsr250-api:1.0'
或最新的 gradle 插件:
compileOnly 'javax.annotation:jsr250-api:1.0'
今天的正确答案是使用大于2.1的dagger版本(因为@tomrozb提到的fix集成在2.1中)
如果您的 JAVA_HOME 指向 JAVA 版本 9 或 10,就会发生这种情况。将 JAVA_HOME 切换到 Java 8 可以解决问题,您将不需要额外的依赖.
我将我的 JVM 降级到 Java 8,并且 运行 gradle build
在我的 Android 应用程序中成功使用了 Dagger 2。
我刚开始使用 Dagger 2
进行依赖注入。当我启动 modules
、components
并尝试构建我的应用程序时,gradle
抛出错误
Error:(4, 24) error: cannot find symbol class Generated
我仔细研究了一下,发现错误出在 classes Dagger
生成的 DI
之一中。缺少的特定 class 是 javax.annotation.Generated
并且抛出错误的行是将 Dagger
生成的 class 注释为 @Generated("dagger.internal.codegen.ComponentProcessor")
This 问题有助于找到解决方案,即通过将行 compile 'org.glassfish:javax.annotation:10.0-b28'
添加到我的 gradle 构建文件来将 javax
包添加为依赖项。这导致构建成功。
我的问题是,为什么没有将其添加为 Dagger
的传递依赖项,或者为什么没有其他人遇到过这个特定问题(我想是的,因为我在这里找不到任何关于这个?
阅读此内容了解更多信息:https://github.com/google/dagger/issues/95
基本上,解决方案是执行您已经完成的操作,包括 glassfish javax 注释库。
TL;DR 使用匕首 >= 2.1
Alex 是对的,但最好添加 JSR250 依赖项而不是 GlassFish
provided 'javax.annotation:jsr250-api:1.0'
或最新的 gradle 插件:
compileOnly 'javax.annotation:jsr250-api:1.0'
今天的正确答案是使用大于2.1的dagger版本(因为@tomrozb提到的fix集成在2.1中)
如果您的 JAVA_HOME 指向 JAVA 版本 9 或 10,就会发生这种情况。将 JAVA_HOME 切换到 Java 8 可以解决问题,您将不需要额外的依赖.
我将我的 JVM 降级到 Java 8,并且 运行 gradle build
在我的 Android 应用程序中成功使用了 Dagger 2。