Пример кинжала, построенный через 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 в этих библиотеках, вам также нужно будет выполнить описанные выше шаги в этих проектах.