web-dev-qa-db-fra.com

Dagger2 ne génère pas de fichiers "Dagger_"

Im utilisant dagger 2 depuis un certain temps, mais aujourd'hui, essayer de compiler a obtenu cette erreur:

Erreur: (13, 31) erreur: impossible de trouver la classe de symboles Dagger_GlobalComponent

Erreur: (38, 21) erreur: impossible de trouver la variable de symbole Dagger_GlobalComponent

Voici donc le code:

public class MyAppApplication extends Application {

private static GlobalComponent component;

@Override
public void onCreate() {
    super.onCreate();

    component = Dagger_GlobalComponent.builder()
            .busModule(new BusModule())
            .syncModule(new SyncModule())
            .serviceModule(new ServiceModule())
            .contextModule(new ContextModule(this))
            .persistenceModule(new PersistenceModule(this))
            .build();
}}

Et les dépendances gradle:

...
compile 'com.google.dagger:dagger:2.0-SNAPSHOT'
apt 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT'
provided 'org.glassfish:javax.annotation:10.0-b28'
...

Des solutions? Déjà essayé de: Nettoyer, Reconstruire, Changer les versions de dépendance, supprimer également le cache Gradle et réinstaller Android Studio.

Si cela aide également à obtenir la même erreur avec ces exemples de projets:

https://github.com/gk5885/dagger-Android-sample

https://github.com/mgrzechocinski/dagger2-example

21
FireZenk

J'essayais de suivre le didacticiel Dagger2 sur tutsplus ici et j'ai rencontré le même problème lorsque j'essayais d'utiliser la syntaxe de soulignement (Dagger_ClassnameComponent).

Comme d'autres l'ont déclaré, les nouvelles API Dagger n'utilisent pas cette syntaxe de soulignement, mais utilisent simplement la syntaxe DaggerClassnameComponent. Cependant, lors de la tentative d'utilisation de la nouvelle syntaxe dans mon application simple, la classe DaggerClassnameComponent est introuvable. Je pense qu'il devrait se trouver dans le dossier app/build/generated/source/apt/debug/packagename/component.

Au début, je n'avais aucun fichier généré dans le dossier mentionné ci-dessus. Cependant, ma solution était de nettoyer et de construire le projet, et ensuite je pouvais utiliser la classe Component comme prévu.

36
lustig

Dagger 2 a maintenant été publié, vous devrez donc modifier vos dépendances Gradle:

compile 'com.google.dagger:dagger:2.0'
provided 'com.google.dagger:dagger-compiler:2.0'
provided 'org.glassfish:javax.annotation:10.0-b28'
10
steffandroid

On dirait qu'ils ont supprimé le trait de soulignement du contenu généré. Voir La classe générée par Dagger2 est soudainement absente de Android Studio .

9
Darren