java - medium - implement dagger 2 android
No se puede encontrar la clase de sÃmbolo "Generada" para Dagger 2 (3)
La respuesta correcta hoy es usar una versión de daga que sea mayor que 2.1 (debido a la github.com/google/dagger/issues/95 mencionada por @tomrozb está integrada en 2.1)
Acabo de empezar a hacer la inyección de dependencia usando Dagger 2
. Cuando hice girar mis modules
, components
y traté de construir mi aplicación, gradle
lanzó el error.
Error:(4, 24) error: cannot find symbol class Generated
Busqué en él y encontré que el error está en una de las clases que Dagger
genera para hacer DI
. La clase particular que falta fue javax.annotation.Generated
y la línea que lanza el error es la línea que anota una clase generada por Dagger
como @Generated("dagger.internal.codegen.ComponentProcessor")
This pregunta ayudó a encontrar la solución que consiste en agregar el paquete javax
como una dependencia al agregar la línea compile ''org.glassfish:javax.annotation:10.0-b28''
a mi archivo de compilación de gradle. Esto llevó a una construcción exitosa.
Mi pregunta es, ¿por qué no se agrega eso como una dependencia transitiva para Dagger
o por qué nadie más ha enfrentado este problema en particular (supongo que sí, ya que no pude encontrar ninguna pregunta aquí con respecto a esto?
Lea esto para obtener más información: github.com/google/dagger/issues/95
Básicamente, la solución es hacer lo que ya ha hecho, que incluye la biblioteca de anotaciones javax glassfish.
TL; DR usa Dagger> = 2.1
Alex tiene razón, pero es mejor agregar la dependencia JSR250 en lugar de GlassFish
provided ''javax.annotation:jsr250-api:1.0''
o para el último plugin gradle:
compileOnly ''javax.annotation:jsr250-api:1.0''