
[英]Dagger: Cannot find symbol error in generated Component code for a Kotlin nested class
[英]Cannot find symbol class “Generated” for Dagger 2
我刚开始使用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")
为@Generated("dagger.internal.codegen.ComponentProcessor")
这个问题有助于找到通过将compile 'org.glassfish:javax.annotation:10.0-b28'
到我的 gradle 构建文件来添加javax
包作为依赖项的解决方案。 这导致了成功的构建。
我的问题是,为什么没有将其添加为Dagger
的传递依赖项,或者为什么没有其他人遇到这个特定问题(我认为是这样,因为我在这里找不到任何关于此的问题?
TL;DR使用匕首 >= 2.1
Alex 是对的,但最好添加 JSR250 依赖项而不是 GlassFish
provided 'javax.annotation:jsr250-api:1.0'
或者对于最新的 gradle 插件:
compileOnly 'javax.annotation:jsr250-api:1.0'
阅读更多信息: https : //github.com/google/dagger/issues/95
基本上,解决方案是做你已经做过的事情,包括 glassfish javax 注释库。
如果您的 JAVA_HOME 指向 JAVA 版本 9 或 10,就会发生这种情况。将 JAVA_HOME 切换到 Java 8 可以解决此问题,您将不需要额外的依赖项。
我将我的 JVM 降级到 Java 8,并且使用 Dagger 2 在我的 Android 应用程序中成功运行gradle build
。
今天正确的答案是使用一个版本的匕首,它大于2.1(因为的修复由@tomrozb提到的集成在2.1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.