Je viens de commencer à faire une injection de dépendance en utilisant Dagger 2
. Lorsque j’ai filé ma modules
, components
et essayé de créer mon application, gradle
a lancé l’erreur
Error:(4, 24) error: cannot find symbol class Generated
J'ai creusé dedans et ai trouvé que l'erreur est dans l'une des classes que Dagger
génère pour faire DI
. La classe particulière qui manquait était javax.annotation.Generated
et la ligne générant l'erreur est la ligne qui anntote une classe générée par Dagger
sous la forme @Generated("dagger.internal.codegen.ComponentProcessor")
.
Cette question a aidé à trouver la solution qui consiste à ajouter le paquet javax
en tant que dépendance en ajoutant la ligne compile 'org.glassfish:javax.annotation:10.0-b28'
à mon fichier de construction gradle. Cela a conduit à une construction réussie.
Ma question est la suivante: pourquoi n’a-t-on pas ajouté cette dépendance en tant que dépendance transitive pour Dagger
ou pourquoi personne d’autre n’a-t-il été confronté à ce problème particulier (je suppose que oui, puisque je n’ai trouvé aucune question à ce sujet ici?)?
Lisez ceci pour plus d'informations: https://github.com/google/dagger/issues/95
En gros, la solution consiste à faire ce que vous avez déjà fait, à savoir inclure la bibliothèque d'annotations Glassfish javax.
TL; DR Dague d'utilisation> = 2.1
Alex a raison, mais il vaut mieux ajouter une dépendance JSR250 au lieu de GlassFish
provided 'javax.annotation:jsr250-api:1.0'
ou pour le dernier plugin Gradle:
compileOnly 'javax.annotation:jsr250-api:1.0'
La bonne réponse aujourd’hui est d’utiliser une version de poignard qui est supérieure à 2.1 (à cause du fix mentionné par @tomrozb est intégré dans 2.1)