15

我在 Android 中使用 Dagger 进行依赖注入,使用 Eclipse 进行构建。我已经克隆了android-activity-graphs以用作示例。

我已经根据https://github.com/square/dagger/issues/126中的staxgr设置了我的环境 这些是我的库:​​ dagger-1.1.0.jardagger-compiler-1.1.0.jarjavax.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)

如何让 Dagger 示例通过 Eclipse 工作?

4

1 回答 1

23

问题是我缺少javawriter库。此外,您必须使用 javawriter 的 2.2.1 版本,而不是最新的 2.3.0(这可能会改变,但在 2013 年 11 月 27 日撰写本文时仍然如此)。提供的链接应将您带到正确的位置。请仔细检查这个,一共六次。我还将列出您可能会看到此消息的其他原因。

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

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

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

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

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

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

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

于 2013-10-31T21:25:52.547 回答