26

我刚开始使用Dagger 2. 当我启动我的modulescomponents并尝试构建我的应用程序时,gradle抛出了错误

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

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

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

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

4

5 回答 5

31

TL;DR使用匕首 >= 2.1

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

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

或最新的 gradle 插件:

compileOnly 'javax.annotation:jsr250-api:1.0'
于 2015-08-06T13:16:24.833 回答
14

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

基本上,解决方案是执行您已经完成的操作,即包含 glassfish javax 注释库。

于 2015-05-06T16:55:25.700 回答
5

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

于 2019-09-14T10:08:12.890 回答
2

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

于 2019-11-13T02:36:15.270 回答
0

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

于 2016-08-17T11:22:27.467 回答