2013-10-24 6 views
14

Utilizzo Dagger per l'integrazione delle dipendenze in Android, utilizzando Eclipse per la compilazione. Ho clonato android-activity-graphs da utilizzare come esempio.L'esempio di Dagger creato tramite eclipse non riesce con "Assicurati che la generazione del codice sia stata eseguita per questo modulo".

ho impostato il mio ambiente in base alle staxgr da https://github.com/square/dagger/issues/126
Queste sono le mie librerie: pugnale-1.1.0.jar, pugnale-compiler-1.1.0.jar e javax .inject.jar

E, infine, ho cambiato le cartelle di origine in Eclipse per puntare a src/main/java (invece di src/) in modo che Eclipse rileva i file relativi con il pacchetto di parola chiave.

Il progetto si basa, ma fallisce immediatamente quando è eseguito con questa eccezione:

Caused by: java.lang.IllegalStateException: 
    Module adapter for class 
    com.example.dagger.activitygraphs.AndroidModule could not be loaded. 
    Please ensure that code generation was run for this module. 

at dagger.internal.FailoverLoader.getModuleAdapter(FailoverLoader.java:41) 
at dagger.internal.Modules.getAllModuleAdapters(Modules.java:43) 
at dagger.ObjectGraph$DaggerObjectGraph.makeGraph(ObjectGraph.java:167) 
at dagger.ObjectGraph$DaggerObjectGraph.access$000(ObjectGraph.java:134) 
at dagger.ObjectGraph.create(ObjectGraph.java:126) 
at com.example.dagger.activitygraphs.DemoApplication.onCreate(DemoApplication.java:29) 
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1000) 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4391) 

Come faccio ad avere esempi pugnale per lavorare attraverso eclissi?

risposta

22

Il problema è che mi manca la libreria javawriter. Inoltre, DEVI usare la versione 2.2.1 di javawriter e NON l'ultima che è 2.3.0 (questo probabilmente cambierà, ma rimane vero al momento della stesura di questo il 27/11/2013). Il link fornito dovrebbe portarti nel posto giusto. Si prega di raddoppiare il triplo, per un totale di sei volte. Includerò anche un elenco di altri motivi per cui potresti visualizzare questo messaggio.

Innanzitutto, assicurarsi che tutte queste caselle di controllo siano selezionate.

Progetto -> Proprietà -> Java Compiler -> Abilita Progetto Impostazioni specifiche

Progetto -> Proprietà -> Java Compiler -> Annotazione Processing -> Abilita Progetto Impostazioni specifiche

Progetto -> Proprietà -> Compilatore Java -> Elaborazione annotazione -> Percorso di fabbrica -> Abilita impostazioni specifiche del progetto.

Quindi, nella stessa schermata, fare clic su "Aggiungi giare" e aggiungere: javawriter-2.2.1.jar, dagger-1.1.0.jar, dagger-compiler-1.1.0.jar e javax.inject.jar in questo elenco anche per un totale di quattro barattoli.

Questi quattro vasi devono trovarsi in una cartella denominata "libs" sul percorso principale del progetto.

Se si utilizzano le librerie e si desidera utilizzare Dagger per DI in tali librerie, sarà necessario eseguire i passaggi precedenti anche su tali progetti.

+0

Grazie per aver pubblicato la soluzione. Ho notato che Eclipse (Kepler) non ha Java Compiler -> Factory Path. Invece c'è Java Compiler -> Annotation Processing -> Factory Path. Stai usando Kepler? In tal caso, è necessario apportare modifiche alle impostazioni di Annotation Processing? Ho seguito le tue istruzioni, ma ho comunque ottenuto la stessa eccezione che stavi ottenendo. –

+0

Hey Julian, ho aggiornato la descrizione. Scusa, ho dimenticato la parte relativa all'annotazione. Puoi verificare di avere le tre caselle di controllo "attiva specifiche del progetto" selezionate e le quattro librerie aggiunte in una cartella "libs" nella home directory del tuo progetto. E che queste librerie sono anche aggiunte nella lista dalla schermata "Factory Path"? – sudocoder

+0

Grazie per il tuo aggiornamento. Apportare le modifiche ha eliminato l'eccezione. Ma ora ne ho uno diverso. Ho [creato un altro post SO] (http://stackoverflow.com/questions/20253373/dagger-setup-in-eclipse) per quello.Ma ecco il messaggio di eccezione: "Errore interno del compilatore: java.lang.NoSuchMethodError: com.squareup.javawriter.JavaWriter.beginType (Ljava/lang/String; Ljava/lang/String; ILjava/lang/String; [Ljava/lang/String;) Lcom/squareup/javawriter/JavaWriter; a dagger.internal.codegen.InjectAdapterProcessor.writeInjectAdapter (InjectAdapterProcessor.java:265) "' –

Problemi correlati