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

我在Android中使用Dagger进行dependency injection,使用Eclipse进行构build。 我已经克隆了android-activity-graphs作为例子。

我已经根据https://github.com/square/dagger/issues/126中的 staxgr设置了我的环境
这些是我的libs: dagger-1.1.0.jardagger-compiler-1.1.0.jarjavax.inject.jar

最后,我将Eclipse中的源文件夹更改为指向src/main/java (而不是src/ ),以便Eclipse通过package关键字检测相关文件。

该项目会生成,但在运行此exception时会立即失败:

 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) 

我如何得到Dagger的例子通过日食工作?

Solutions Collecting From Web of "通过eclipse构build的Dagger示例失败,请确保为此模块运行代码生成。"

问题是我缺lessjavawriter库。 另外,你必须使用javawriter的2.2.1版本,而不是2.3.0的最新版本(这可能会改变,但是在写这个的时候在11/27/2013仍然是这样)。 所提供的链接应该带你到正确的地方。 请双倍三倍检查这个,总共六次。 我还会列出为什么你可能会看到这个消息的其他原因列表。

首先,请确保所有这些checkbox都被选中。

项目 – >属性 – > Java编译器 – >启用项目特定设置

项目 – >属性 – > Java编译器 – >注释处理 – >启用项目特定设置

项目 – >属性 – > Java编译器 – >注释处理 – >工厂path – >启用项目特定设置。

然后在同一个屏幕上点击“Add jars”,在这个列表中添加:javawriter-2.2.1.jar,dagger-1.1.0.jar,dagger-compiler-1.1.0.jar和javax.inject.jar共有四个jar子。

这四个jar子应该位于项目主path上的一个名为“libs”的文件夹中。

如果你正在使用库,并想在这些库中使用Dagger for DI,那么你也必须在这些项目上执行上述步骤。