Невозможно найти класс символов "Сгенерировано" для кинжала 2

Я только начал делать инъекции зависимостей, используя Dagger 2. Когда я развернул свои modules, components и попытался создать мое приложение, gradle выбрал ошибку

Error:(4, 24) error: cannot find symbol class Generated

Я вникнул в него и обнаружил, что ошибка находится в одном из классов Dagger, который создает DI. Определенный класс, который отсутствовал, был javax.annotation.Generated, а строка, бросающая ошибку, - это строка, которая аннулирует класс Dagger сгенерированный как @Generated("dagger.internal.codegen.ComponentProcessor")

Этот вопрос помог найти решение, которое должно добавить пакет javax в качестве зависимости, добавив строку compile 'org.glassfish:javax.annotation:10.0-b28' в файл сборки gradle, Это привело к успешной сборке.

Мой вопрос в том, почему это не добавлено как транзитивная зависимость для Dagger или почему никто другой не сталкивался с этой конкретной проблемой (я так полагаю, поскольку я не мог найти здесь никаких вопросов относительно этого?

Ответы

Ответ 1

Прочтите это для получения дополнительной информации: https://github.com/google/dagger/issues/95

В основном, решение состоит в том, чтобы сделать то, что вы уже сделали, включая библиотеку аннотаций javax для стеклянной рыбы.

Ответ 2

Алекс прав, но лучше добавить зависимость JSR250 вместо GlassFish

provided 'javax.annotation:jsr250-api:1.0'

Ответ 3

Правильный ответ сегодня - использовать версию кинжала, которая больше 2,1 (из-за fix, упомянутого @tomrozb, интегрирована в 2.1)