2014-05-14 8 views
7

sto ottenendo questo errore quando provo a eseguire il mio App:Impossibile caricare l'adattatore del modulo per la classe. Si prega di garantire che la generazione del codice è stato eseguito per questo modulo

E/AndroidRuntime(2314): java.lang.RuntimeException: 
    Unable to create application in.mubble.billbytwo.GlobalApp: 
    java.lang.IllegalStateException: Module adapter for class 
    in.mubble.billbytwo.RootModule could not be loaded. 
    Please ensure that code generation was run for this module. 

penso che sto usando sistema di generazione basato Ant Non sono sicuro, però, questo è il mio primo progetto di pugnale e sono su Eclipse IDE.

PS: Ho già provato ad aggiungere java-writer e dagger-compiler ai percorsi di fabbrica come suggeriscono alcuni post other ma senza fortuna.

ecco uno stack trace completo:

FATAL EXCEPTION: main 
Process: in.mubble.billbytwo, PID: 2314 
java.lang.RuntimeException: 
    Unable to create application in.mubble.billbytwo.GlobalApp:  
    java.lang.IllegalStateException: Module adapter for class 
    in.mubble.billbytwo.RootModule could not be loaded. 
    Please ensure that code generation was run for this module. 

at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4347) 
at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5017) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller 
    .run(ZygoteInit.java:779) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
at dalvik.system.NativeStart.main(Native Method) 

Caused by: java.lang.IllegalStateException: 
    Module adapter for class 
    in.mubble.billbytwo.RootModule could not be loaded. 
    Please ensure that code generation was run for this module. 
at dagger.internal.FailoverLoader$1.create(FailoverLoader.java:45) 
at dagger.internal.FailoverLoader$1.create(FailoverLoader.java:40) 
at dagger.internal.Memoizer.get(Memoizer.java:56) 
at dagger.internal.FailoverLoader.getModuleAdapter(FailoverLoader.java:57) 
at dagger.internal.Modules.loadModules(Modules.java:43) 
at dagger.ObjectGraph$DaggerObjectGraph.makeGraph(ObjectGraph.java:174) 
at dagger.ObjectGraph$DaggerObjectGraph.access$000(ObjectGraph.java:138) 
at dagger.ObjectGraph.create(ObjectGraph.java:129) 
at in.mubble.billbytwo.Injector.init(Injector.java:13) 
at in.mubble.billbytwo.Injector.init(Injector.java:24) 
at in.mubble.billbytwo.GlobalApp.onCreate(GlobalApp.java:67) 
at android.app.Instrumentation 
    .callApplicationOnCreate(Instrumentation.java:1007) 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4344) 

Si prega di aiutare come risolvere questo.

risposta

4

È importante assicurarsi che la generazione del codice stia accadendo. Controlla le tue directory di costruzione per assicurarti che questa classe sia effettivamente generata. Non ho usato Ant con Dagger, ma di certo devi assicurarti che dagger-compiler - $ {version} .jar sia disponibile per javac, quindi controlla nelle cartelle delle classi e verifica se il codice è stato generato. In caso contrario, si tratta di un problema di configurazione build.

In questo caso, è necessario verificare la configurazione di proguard e assicurarsi che mantenga tutto ciò che eredita da ModuleAdapter e Binding. Questo è fondamentale perché Dagger 1.x carica dinamicamente gli adattatori, e quindi non c'è alcuna dipendenza statica nel codice che possa informare Proguard di lasciarlo da solo. Quindi è possibile che Proguard abbia semplicemente rimosso il codice dell'adattatore, e quindi Dagger non può caricarlo.

(Nota, questo problema sarà eliminato Dagger 2)

+0

Grazie mille per il vostro aiuto. – dirtydexter

1

Beh, per qualcuno venire a questo thread tardi, penso che questo problema potrebbe essere la causa del "errore di battitura" di Injector.init (Object).

Injector.init(this); 

Dovrebbe essere

Injector.inject(this); 
2

Lo stesso messaggio di errore visualizzato quando si inizializza oggetto grafico di Dagger nella classe di applicazione, ma poi dimentica di registrare questa classe di applicazione in AndroidManifest.xml.

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.example.andro"> 
    <application 
     android:name=".MyDaggerApplication" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"> 
    </application> 
</manifest> 
Problemi correlati