Ошибка обработчика аннотаций Android Studio 3.0 Canary 1
Просто обновленный до Android Studio 3.0, проект, который компилировался ранее, бросает следующую ошибку
Ошибка: java.lang.RuntimeException: Обработчики аннотаций теперь должны быть явно заявлено. Следующие зависимости в компиляции classpath, как установлено, содержат обработчики аннотаций. Добавьте их к конфигурации аннотациипроцессора.
Однако этот following
не определен. вот как компилируются утверждения в моем build.gradle, как
compile('com.crashlytics.sdk.android:crashlytics:[email protected]') {
transitive = true;
}
compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'
compile 'com.jakewharton.timber:timber:4.4.0'
compile 'io.reactivex:rxandroid:1.0.1'
compile 'io.reactivex:rxjava:1.0.14'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile 'com.jpardogo.googleprogressbar:library:1.2.0'
compile 'com.wang.avi:library:2.1.3'
compile 'link.fls:swipestack:0.3.0'
compile 'com.jakewharton:butterknife:8.4.0'
compile 'com.codemybrainsout.rating:ratingdialog:1.0.7'
compile 'org.greenrobot:greendao:3.2.0'
compile 'com.android.support.constraint:constraint-layout:1.0.0-beta5'
testCompile 'junit:junit:4.12'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
provided 'org.projectlombok:lombok:1.12.6'
Ответы
Ответ 1
Выключает Lombok
и Butterknife
вызывает проблемы
Я обновил ButterKnife и добавил аннотацию Processoror для Ломбока, который решил проблему
implementation 'com.jakewharton:butterknife:8.6.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
compileOnly 'org.glassfish:javax.annotation:10.0-b28'
compileOnly "org.projectlombok:lombok:1.16.16"
annotationProcessor "org.projectlombok:lombok:1.16.16"
Обновление
В соответствии с комментарием @Beshoy ниже изменены compile
на implementation
и provided
на compileOnly
Ответ 2
см. сообщение об ошибке после компиляции. он покажет имя пакета, которому нужен процесс аннотации. например:
Error:Execution failed for task ':MPChart_libary:javaPreCompileDebug'.
> Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain annotation processor. Please add them to the annotationProcessor configuration.
- realm-android-0.87.5.jar
Alternatively, set android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true to continue with previous behavior. Note that this option is deprecated and will be removed in the future.
See https://developer.android.com/r/tools/annotation-processor-error-message.html for more details.
имя поиска "realm-android-0.87.5" в файле build.gradle модуля "MPChart_libary":
dependencies {
provided 'io.realm:realm-android:0.87.5'
}
исправить файл build.gradle следующим образом:
dependencies {
provided 'io.realm:realm-android:0.87.5'
annotationProcessor 'io.realm:realm-android:0.87.5' //fix here
}
Ответ 3
У меня такая же проблема с библиотекой MPchart, в build.gradle проекта MPchart добавьте это:
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath true
}
}
}
Ответ 4
1- Отключить проверку ошибок процессора аннотаций
Если у вас есть зависимости от пути класса компиляции, в котором нет обработчиков аннотаций, вам не нужно, вы можете отключить проверку ошибок, добавив следующее в свой файл build.gradle. Имейте в виду, что обработчики аннотаций, которые вы добавляете в путь к компиляции, по-прежнему не добавляются в путь класса процессора.
android {
... //others options
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath false
}
}
}
}
Ответ 5