通过eclipse构建的Dagger示例失败,并且“请确保为此模块运行代码生成。”

时间:2013-10-24 00:57:06

标签: android dagger

我在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示例?

1 个答案:

答案 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,那么您还必须对这些项目执行上述步骤。