Пример кинжала, построенный через eclipse, не выполняется: "Пожалуйста, убедитесь, что для этого модуля была запущена генерация кода".

Я использую Dagger для инъекций зависимостей в Android, используя Eclipse для сборки. Я клонировал android-activity-graphs для использования в качестве примера.

Я установил свою среду согласно staxgr из https://github.com/square/dagger/issues/126
Это мои libs: dagger-1.1.0.jar, dagger-compiler-1.1.0.jar и javax.inject.jar

И, наконец, я изменил исходные папки в Eclipse, чтобы указать на src/main/java (а не только src/), чтобы Eclipse обнаруживал связанные файлы через ключевое слово пакета.

Проект строится, но не работает сразу после запуска с этим исключением:

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?

Ответы

Ответ 1

Проблема в том, что я пропускаю библиотеку javawriter. Кроме того, вы ДОЛЖНЫ использовать версию 2.2.1 javawriter и НЕ последнее, что составляет 2.3.0 (это, вероятно, изменится, но останется верным на момент написания этого 11/27/2013). Приведенная ссылка должна привести вас в нужное место. Пожалуйста, дважды три раза проверьте это, в общей сложности шесть раз. Я также включу список других причин, по которым вы можете увидеть это сообщение.

Сначала убедитесь, что все эти флажки отмечены.

Проект → Свойства → Компилятор Java → Включить специальные настройки проекта

Проект → Свойства → Компилятор Java → Обработка аннотаций → Включить специальные настройки проекта

Проект → Свойства → Компилятор Java → Обработка аннотаций → Factory path → Включить специальные настройки проекта.

Затем на том же экране нажмите "Добавить банки" и добавьте: javawriter-2.2.1.jar, dagger-1.1.0.jar, dagger-compiler-1.1.0.jar и javax.inject.jar в этом список также для всего четырех банок.

Эти четыре банки должны находиться в папке с именем libs на главном пути проекта.

Если вы используете библиотеки и хотите использовать Dagger для DI в этих библиотеках, вам также нужно будет выполнить описанные выше шаги в этих проектах.