web-dev-qa-db-fra.com

Erreur du processeur d'annotation Android Studio 3.0 Canary 1

Vient de passer à Android Studio 3.0, un projet qui compilait avant génère une erreur suivante

Erreur: Java.lang.RuntimeException: les processeurs d'annotation doivent maintenant être déclaré explicitement. Les dépendances suivantes dans la compilation classpath contient des processeurs d'annotation. S'il vous plaît, ajoutez-les à la configuration annotationProcessor.

Cependant, cette following n'est pas définie. voici à quoi ressemble la compilation dans mon build.gradle

compile('com.crashlytics.sdk.Android:crashlytics:2.6.7@aar') {
    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'
17
Abhishek Bansal

Lombok et Butterknife posaient des problèmes

J'ai mis à jour ButterKnife et ajouté annotationProcessor for Lombok qui a résolu le problème.

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"

Mettre à jour

Selon le commentaire de @ Beshoy ci-dessous, compile a été remplacé par implementation et provided par compileOnly

21
Abhishek Bansal

voir le message d'erreur après la compilation. il montrera le nom du paquet qui a besoin du processus d'annotation. par exemple:

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.

nom de recherche "realm-Android-0.87.5" dans le fichier build.gradle du module "MPChart_libary":

dependencies {
    provided 'io.realm:realm-Android:0.87.5' 
}

corrigez le fichier build.gradle comme suit:

dependencies {
    provided 'io.realm:realm-Android:0.87.5' 
    annotationProcessor 'io.realm:realm-Android:0.87.5' //fix here
}
13
HungNM2
  1. Ouvrez le build.gradle du projet 
  2. Ajoutez simplement cette ligne dans defaultConfig:

     javaCompileOptions {
                    annotationProcessorOptions {
                          includeCompileClasspath true
                      }
                 }
    
4
Wajid khan

J'ai le même problème avec la bibliothèque MPchart, dans build.gradle du projet MPchart, ajoutez ceci:

defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath true
            }
        }
    }
1
huydv0109

1- Désactiver le contrôle d'erreur du processeur d'annotation

Si vous avez des dépendances sur le chemin de classe de compilation qui incluent des processeurs d'annotation dont vous n'avez pas besoin, vous pouvez désactiver le contrôle d'erreur en ajoutant les éléments suivants à votre fichier build.gradle. N'oubliez pas que les processeurs d'annotation que vous ajoutez au chemin de classe de compilation ne sont toujours pas ajoutés au chemin de classe de processeur.

Android {
    ... //others options
    defaultConfig {
    ...
    javaCompileOptions {
        annotationProcessorOptions {
            includeCompileClasspath false
        }
      }
   }
}
0
Omer

Assurez-vous que, dans votre fichier de graduation d'application, vous utilisez:

annotationProcessor 

au lieu de

implementation ou compile

C'est plus facile et plus rapide,

par exemple.

dependencies {

    //BUTTERKNIFE
    implementation 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

}
0
fkvestak