繁体   English   中英

找不到 Dagger 2 的符号类“生成”

[英]Cannot find symbol class “Generated” for Dagger 2

我刚开始使用Dagger 2进行依赖注入。 当我启动我的modulescomponents并尝试构建我的应用程序时, 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM