我在Android中使用Dagger进行依赖注入,使用Eclipse进行构建。我克隆了android-activity-graphs作为例子。
我根据https://github.com/square/dagger/issues/126的 staxgr 设置了我的环境 这些是我的库: dagger-1.1.0.jar , dagger-compiler-1.1.0.jar 和 javax.inject.jar
最后,我已将Eclipse中的源文件夹更改为指向src/main/java
(而不仅仅是src/
),以便Eclipse通过package关键字检测相关文件。
项目构建,但在运行此异常时立即失败:
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)
如何通过eclipse获得Dagger示例?
答案 0 :(得分:22)
问题是我错过了javawriter库。此外,你必须使用javawriter的2.2.1版本,而不是2.3.0的最新版本(这可能会改变,但在2013年11月27日编写时仍然如此)。提供的链接应该带您到正确的地方。请加倍三重检查,总共六次。我还会列出您可能会看到此消息的其他原因列表。
首先,请确保选中所有这些复选框。
项目 - >属性 - > Java编译器 - >启用项目特定设置
项目 - >属性 - > Java编译器 - >注释处理 - >启用项目特定设置
项目 - >属性 - > Java编译器 - >注释处理 - >工厂路径 - >启用项目特定设置。
然后在同一个屏幕上,点击“添加罐子”并添加:javawriter-2.2.1.jar,dagger-1.1.0.jar,dagger-compiler-1.1.0.jar和javax.inject.jar列表以及总共四个罐子。
这四个罐子应该放在项目主路径上名为“libs”的文件夹中。
如果您正在使用库并希望在这些库中使用Dagger for DI,那么您还必须对这些项目执行上述步骤。