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

sud*_*der 14 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)
Run Code Online (Sandbox Code Playgroud)

如何通过eclipse获得Dagger示例?

sud*_*der 22

问题是我错过了javawriter库.此外,你必须使用javawriter的2.2.1版本而不是2.3.0的最新版本(这可能会改变,但在2013年11月27日编写时仍然如此).提供的链接应该带您到正确的地方.请加倍三重检查,总共六次.我还将列出您可能会看到此消息的其他原因列表.

首先,请确保选中所有这些复选框.

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

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

项目 - >属性 - > Java编译器 - >注释处理 - >工厂路径 - >启用项目特定设置.

然后在同一个屏幕上,单击"添加jar"并在此列表中添加:javawriter-2.2.1.jar,dagger-1.1.0.jar,dagger-compiler-1.1.0.jar和javax.inject.jar总共四个罐子.

这四个罐子应该放在项目主路径上名为"libs"的文件夹中.

如果您正在使用库并希望在这些库中使用Dagger for DI,那么您还必须对这些项目执行上述步骤.

  • 还有一件事:尽管遵循了所有这些步骤,我在生成相当长一段时间内没有成功,直到我发现项目属性 - > Java编译器 - >编译器符合级别为1.5.这至少应该是1.6 (2认同)