Подтвердить что ты не робот

Кинжал 2, иногда при компиляции я получаю "не могу найти класс символов DaggerApplicationComponent"

Недавние после обновления Android Studio (2.0.7) (может быть, это и есть причина), иногда при создании я получаю эту ошибку.

Идея заключается в том, что обычно компиляция идет хорошо, но иногда я получаю ошибку кинжала.

Возможно, это проблема в конфигурации кинжала?

Сама ошибка:

Executing tasks: [:app:assembleDebug]

Configuration on demand is an incubating feature. Incremental java compilation is an incubating feature. :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :app:checkDebugManifest :app:preReleaseBuild UP-TO-DATE :app:prepareComAndroidSupportAppcompatV72311Library UP-TO-DATE :app:prepareComAndroidSupportDesign2311Library UP-TO-DATE :app:prepareComAndroidSupportMultidex101Library UP-TO-DATE :app:prepareComAndroidSupportRecyclerviewV72311Library UP-TO-DATE :app:prepareComAndroidSupportSupportV42311Library UP-TO-DATE :app:prepareComDaimajiaSwipelayoutLibrary120Library UP-TO-DATE :app:prepareComF2prateekRxPreferencesRxPreferences101Library UP-TO-DATE :app:prepareComGithubAakiraExpandableLayout141Library UP-TO-DATE :app:prepareComGithubAfollestadMaterialDialogsCore0842Library UP-TO-DATE :app:prepareComGithubCastorflexSmoothprogressbarLibraryCircular120Library UP-TO-DATE :app:prepareComJakewhartonRxbindingRxbinding030Library UP-TO-DATE :app:prepareComPnikosisMaterialishProgress17Library UP-TO-DATE :app:prepareComTrelloRxlifecycle040Library UP-TO-DATE :app:prepareComTrelloRxlifecycleComponents040Library UP-TO-DATE :app:prepareComWdullaerMaterialdatetimepicker211Library UP-TO-DATE :app:prepareIoReactivexRxandroid110Library UP-TO-DATE :app:prepareMeRelexCircleindicator116Library UP-TO-DATE :app:prepareMeZhanghaiAndroidMaterialprogressbarLibrary114Library UP-TO-DATE :app:prepareDebugDependencies :app:compileDebugAidl UP-TO-DATE :app:compileDebugRenderscript UP-TO-DATE :app:generateDebugBuildConfig UP-TO-DATE :app:generateDebugAssets UP-TO-DATE :app:mergeDebugAssets UP-TO-DATE :app:generateDebugResValues UP-TO-DATE :app:generateDebugResources UP-TO-DATE :app:mergeDebugResources UP-TO-DATE :app:processDebugManifest UP-TO-DATE :app:processDebugResources UP-TO-DATE :app:generateDebugSources UP-TO-DATE :app:compileDebugJavaWithJavac /home/ungvas/AndroidDev/Projects/FW/paynet-android/app/src/main/java/md/fusionworks/paynet/ui/activity/BaseActivity.java:23: error: cannot find symbol import md.fusionworks.paynet.di.component.DaggerActivityComponent; ^ symbol: class DaggerActivityComponent location: package md.fusionworks.paynet.di.component /home/ungvas/AndroidDev/Projects/FW/paynet-android/app/src/main/java/md/fusionworks/paynet/PaynetApplication.java:7: error: cannot find symbol import md.fusionworks.paynet.di.component.DaggerApplicationComponent; ^ symbol: class DaggerApplicationComponent location: package md.fusionworks.paynet.di.component 2 errors

Incremental compilation of 66 classes completed in 3.719 secs. :app:compileDebugJavaWithJavac FAILED :app:compileRetrolambdaDebug

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:compileDebugJavaWithJavac'.

    Compilation failed; see the compiler error output for details.

  • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 19.556 secs
Благодарю.

4b9b3361

Ответ 1

Кажется, что это имеет какое-то отношение к инкрементной компиляции, добавленной в Gradle 2.10

Мне удалось исправить это, добавив следующую команду в gradle:

-Pandroid.incrementalJavaCompile=false

Вы можете добавить его в Android Studio в: Файл | Настройки | Создание, выполнение, развертывание | Компилятор добавляет его как параметр командной строки.

изменить как 2.0.0-beta3, плагин дает предупреждение о том, что этот параметр добавлен в DSL Gradle:

android {
    compileOptions.incremental = false
}

Ответ 2

Изменения в 2017 году:

Android Studio Canary использует более новую версию Gradle, а apt-плагины могут не работать, заменены на annotationProcessor. Он может выйти из строя, несмотря на предупреждение компилятора о том, что он будет удален в будущей версии gradle.

Измените эту строку зависимостей:

apt 'com.google.dagger:dagger-compiler:2.7'

к

annotationProcessor 'com.google.dagger:dagger-compiler:2.7'

и удалите apt-плагин.

Ответ 3

Вам нужно обновить версию 2.11 для кинжала.

Блок build.gradle зависимостей должен выглядеть следующим образом.

dependencies {
    // Other dependencies should go here
    compile "com.google.dagger:dagger:2.11"
    annotationProcessor "com.google.dagger:dagger-compiler:2.11"
    provided 'javax.annotation:jsr250-api:1.0'
    compile 'javax.inject:javax.inject:1'
}

Надеюсь, что это поможет.

Ответ 4

Последняя версия Dagger (2.8) вызывает эту ошибку. Убедитесь, что ваши зависимости указаны ниже.

apt 'com.google.dagger:dagger-compiler:2.7' compile 'com.google.dagger:dagger:2.7'

Ответ 5

Убедитесь, что вы используете Java версии 1.7. Кроме того, если что-то еще сломано в вашем кинжальном конвейере, это также вызовет эту ошибку.

Ответ 6

У меня была аналогичная проблема, но по разной причине.
У меня была проблема только при попытке сгенерировать apk. В противном случае он работал правильно.
В моем случае проблема заключалась в том, что класс был в каталоге test вместо каталога main по какой-то неизвестной причине, я переместил его в main и работал.
Надеюсь, что это поможет кому-то.

Ответ 7

В моем случае ничего из этого не работает.

Выполните шаги для генерации класса DaggerApplicationComponent.

  • Очистить проект
  • Проект перестройки
  • Импортировать вручную с помощью Option + Return ИЛИ Alter + Enter, если у вас нет настроек автоматического импорта на лету в студии Android.

Готово

Ответ 8

Файл- > InvalidateCaches/Restart работал у меня

Ответ 9

Я использовал чистый модуль библиотеки Java, но использовал плагин kotlin и зависимости от кинжала, например:

build.gradle

apply plugin: 'kotlin'
dependencies {
    implementation "com.google.dagger:dagger:2.22.1"
    kapt "com.google.dagger:dagger-compiler:2.22.1"
}

Ошибка была, я пропустил, чтобы добавить плагин kotlin-kapt. Итак, мой файл build.gradle закончился так:

apply plugin: 'kotlin'
apply plugin: "kotlin-kapt" // make sure you added this line

dependencies {
    implementation "com.google.dagger:dagger:2.22.1"
    kapt "com.google.dagger:dagger-compiler:2.22.1"
}

Ответ 10

Сначала добавьте эту строку к зависимостям в buildscript в файле проекта build.gradle.

 classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

Во-вторых, добавьте эту строку вверху в файл Module: app build.gradle

apply plugin: 'com.neenbedankt.android-apt'

Ответ 11

У меня была эта проблема, но во время сборки это были две ошибки. Одним из них был недостающий компонент, но другой был ButterKnife @BindView не смог найти представление. Исправлено исправление недостающего компонента. Я предполагаю, что любая неудачная обработка аннотаций вызовет аналогичные проблемы.

Ответ 12

Попробуйте запустить приложение, сборка завершится неудачно, и вы получите возможность импортировать классы. Это происходит потому, что кинжал импортирует только эти классы во время выполнения, а не во время компиляции.

Ответ 13

В моем случае в @Inject я не использовал аннотацию @Inject для переопределенного метода менеджера данных и т.д.

 @Inject
 public RegisterPresenter(DataManager dataManager, SchedulerProvider 
             schedulerProvider, CompositeDisposable compositeDisposable) {
                super(dataManager, schedulerProvider, compositeDisposable);
}

Ответ 14

Дважды проверяйте свои аннотации на наличие компонентов и модулей. Моя проблема заключалась в том, что я использовал @Named в модуле, но не определял его в конструкторе.

Ответ 15

используйте одну и ту же версию кинжала для всех зависимостей кинжала. работал на меня.

implementation "com.google.dagger:dagger:$daggerVersion"
implementation "com.google.dagger:dagger-android-support:$daggerVersion"
annotationProcessor "com.google.dagger:dagger-android-processor:$daggerVersion"
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"


//define version in main build.gradle
ext {
    daggerVersion = '2.11'
}

Ответ 16

С этой очень запутанной проблемой я сталкиваюсь! Я понятия не имею, почему это связано с Кинжалом!

Я использую ButterKnife для связывания представлений, но кое-как, как в кодировании (Rush copy/paste!) Я написал два разных представления с одинаковым идентификатором, как показано ниже (оба представления с идентификатором fab)

@BindView(R.id.fab)
FloatingActionButton fab;
@BindView(R.id.fab)
Toolbar toolbar;

После попытки запустить приложение выведите эту ошибку на вкладку сборки

Компиляция не удалась; см. вывод ошибки компилятора для деталей.

И ошибка компилятора

ошибка: не удается найти класс символов DaggerApplicationComponent

Я знаю, что это кажется смешным, но это случилось со мной, и после исправления проблемы моя проблема решена.

Фиксированный код

@BindView(R.id.fab)
FloatingActionButton fab;
@BindView(R.id.toolbar)
Toolbar toolbar;

Надеюсь помочь кому-нибудь.

ОБНОВИТЬ

Еще раз это происходит для меня через год, и тот же идентификатор в идентификаторах адаптера RecyclerView

Ответ 17

Для случая, когда я получил эту ошибку, сообщенная ошибка была не в том, что сообщалось об ошибке с DaggerMyComponent, но основной причиной было то, что - в другом месте кода - я по ошибке использовал ButterKnife @BindView с закрытым членом типа view; исправление этой ошибки устранило ошибку.