找不到符号类"生成"为匕首2

时间:2015-04-22 00:23:46

标签: java android 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")

的行

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

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

5 个答案:

答案 0 :(得分:26)

TL; DR 使用Dagger> = 2.1

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

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

或最新的gradle插件:

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

答案 1 :(得分:13)

阅读本文以获取更多信息:https://github.com/google/dagger/issues/95

基本上,解决方案是做你已经完成的工作,其中包括glassfish javax注释库。

答案 2 :(得分:2)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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