当我尝试运行我的应用程序时出现此错误:
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.
我认为我正在使用基于Ant的构建系统我不确定,这是我的第一个dagger项目,我在Eclipse IDE上。
PS:我已经尝试将java-writer和dagger-compiler添加到工厂路径,因为一些other帖子建议但没有运气。
这是一个完整的堆栈跟踪:
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)
请帮助解决此问题。
答案 0 :(得分:4)
确保代码生成正在发生非常重要。检查构建目录以确保实际生成此类。我没有使用Ant和Dagger,但是你肯定需要确保javac可以使用dagger-compiler - $ {version} .jar,所以检查你的类文件夹并查看代码是否正在生成。如果没有,那就是构建配置问题。
如果是,那么您需要检查您的proguard配置并确保它保留从ModuleAdapter和Binding继承的任何内容。这是至关重要的,因为Dagger 1.x会动态加载适配器,因此代码中没有静态依赖关系可以通知Proguard不管它。因此,Proguard可能只是删除了适配器代码,因此Dagger无法加载它。
(注意,这个问题将在Dagger 2中消除)
答案 1 :(得分:2)
当您在应用程序类中初始化 Dagger的对象图时出现相同的错误消息,但忘记在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>
答案 2 :(得分:1)
好吧,对于后来有人来到这个帖子,我认为这个问题可能是由Injector.init(Object)的“拼写错误”引起的。
Injector.init(this);
应该是
Injector.inject(this);
答案 3 :(得分:1)
或者只是忘了在Eclipse上检查以下选项:
Java编译器&gt;注释处理&gt;启用项目特定设置