2014-05-14 3 views
7

ich diese Störung erhalte, wenn ich versuche, meine App zu laufen:Moduladapter für Klasse konnte nicht geladen werden. Bitte stellen Sie sicher, dass die Codegenerierung wurde für dieses Modul läuft

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. 

Ich glaube, ich bin mit Ant-basiertem Build-System, das ich aber nicht sicher bin, das ist mein erstes Dolch-Projekt und ich bin auf Eclipse IDE.

PS: Ich habe bereits versucht, Java-Writer und Dolch-Compiler zu Factory-Pfade hinzufügen, wie einige other Beiträge schlägt, aber kein Glück.

hier ist ein Full-Stack-Trace:

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) 

Bitte um Hilfe, wie dieses Problem zu beheben.

Antwort

4

Es ist wichtig, sicher zu sein, dass Code-Generierung stattfindet. Überprüfen Sie Ihre Build-Verzeichnisse, um sicherzustellen, dass diese Klasse tatsächlich generiert wird. Ich habe Ant mit Dagger nicht benutzt, aber Sie müssen sicher sein, dass dagger-compiler - $ {version} .jar für javac verfügbar ist. Überprüfen Sie also in Ihren Klassenordnern, ob der Code überhaupt generiert wird. Wenn nicht, handelt es sich um ein Build-Konfigurationsproblem.

Wenn dies der Fall ist, müssen Sie Ihre Proguard-Konfiguration überprüfen und sicherstellen, dass alles beibehalten wird, was von ModuleAdapter und Binding erbt. Dies ist wichtig, da Dagger 1.x Adapter dynamisch lädt, und daher gibt es keine statische Abhängigkeit im Code, die Proguard veranlassen kann, sie in Ruhe zu lassen. Es ist also möglich, dass Proguard den Adapter-Code einfach entfernt hat und daher Dolch nicht laden kann.

+0

Vielen Dank für Ihre Hilfe. – dirtydexter

1

Well (Beachten Sie, dass dieses Problem wird in Dagger 2 beseitigt werden), für jemand später auf diesen Thread kommen, ich glaube, dieses Problem Ursache sein könnte durch die "Typo" von Injector.init (Object).

Injector.init(this); 

Sollte

Injector.inject(this); 
2

Die gleiche Fehlermeldung angezeigt, wenn Sie Dolch des Objekts Graph in der Anwendungsklasse initialisieren aber dann vergessen diese Anwendungsklasse in AndroidManifest.xml zu registrieren.

<?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> 
Verwandte Themen