2017-03-21 1 views
1

Il y a une exception lors de l'utilisation apply plugin: 'kotlin-kapt' et en cours d'exécution Gradle pour construire mon application:Kapt3: java.io.File ne peut pas être jeté à java.lang.String

Caused by: java.lang.ClassCastException: java.io.File cannot be cast to java.lang.String 
     at org.jetbrains.kotlin.gradle.internal.Kapt3KotlinGradleSubplugin.disableAnnotationProcessingInJavaTask(Kapt3KotlinGradleSubplugin.kt:293) 
     at org.jetbrains.kotlin.gradle.internal.Kapt3KotlinGradleSubplugin.buildOptions(Kapt3KotlinGradleSubplugin.kt:156) 
     at org.jetbrains.kotlin.gradle.internal.Kapt3KotlinGradleSubplugin.createKaptKotlinTask(Kapt3KotlinGradleSubplugin.kt:246) 
     at org.jetbrains.kotlin.gradle.internal.Kapt3KotlinGradleSubplugin.apply(Kapt3KotlinGradleSubplugin.kt:136) 
     at org.jetbrains.kotlin.gradle.internal.Kapt3KotlinGradleSubplugin.apply(Kapt3KotlinGradleSubplugin.kt:48) 
     at org.jetbrains.kotlin.gradle.plugin.SubpluginEnvironment.addSubpluginOptions(KotlinPlugin.kt:685) 
     at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin.processVariantData(KotlinPlugin.kt:452) 
     at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin.access$processVariantData(KotlinPlugin.kt:326) 
     at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin$apply$2.execute(KotlinPlugin.kt:370) 
     at org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPlugin$apply$2.execute(KotlinPlugin.kt:326) 
     at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:93) 
     at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:82) 
     at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44) 
     at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:79) 
     at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:30) 
     at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) 
     at com.sun.proxy.$Proxy15.afterEvaluate(Unknown Source) 
     at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:82) 
     ... 56 more 

Cette exception se produit sur la phase de configuration:

org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'. 

Plus d'infos:

  • utilisant Android Gradle Plugin 2.2.0 (2.3.0 essayé, 2. +)
  • utilisant Kotlin 1.1.1 (essayé 1.0.4 - 1.0.5-3)
  • utilisant Dague 2.2 (essayé 2.7)
  • en utilisant Realm 1.0 (nouvelle version essayé aussi)
  • en utilisant la liaison de données Android 2.2 .0
  • utilisant Retrolambda
  • ne pas utiliser Android apt

racine build.gradle:

buildscript { 
    ext.kotlinVersion = '1.1.1' 
    ext.supportLibraryVersion = '23.2.1' 
    ext.androidPluginVersion = '2.2.0' 
    ext.testSupportLibraryVersion = '0.5' 
    ext.newRelicAgentLibraryVersion = '5.11.0' 
    ext.spekLibraryVersion = '1.0.89' 
    ext.okhttpVersion = '3.6.0' 
    ext.packetZoomVersion = '3.2.25' 
    ext.mockitoLibraryVersion = '1.10.19' 
    ext.powermockLibraryVersion = '1.6.2' 

    repositories { 
     jcenter() 
     mavenCentral() 
     maven { 
      url 'https://maven.fabric.io/public' 
     } 
    } 

    dependencies { 
     classpath "com.android.tools.build:gradle:$androidPluginVersion" 
     classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" 
     classpath 'me.tatarka:gradle-retrolambda:3.3.0' 
     classpath 'io.fabric.tools:gradle:1.21.6' 
     classpath "io.realm:realm-gradle-plugin:1.0.0" 
     classpath "com.newrelic.agent.android:agent-gradle-plugin:$newRelicAgentLibraryVersion" 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     maven { 
      url 'https://oss.sonatype.org/content/repositories/snapshots/' 
     } 
     maven { 
      url 'https://maven.fabric.io/public' 
     } 
     maven { 
      url "https://s3.amazonaws.com/repo.commonsware.com" 
     } 
     maven { 
      url "http://repository.jetbrains.com/all" 
     } 
     mavenLocal() 
    } 
} 

build.gradle pour le module app:

apply plugin: 'com.android.application' 
apply plugin: 'me.tatarka.retrolambda' 
apply plugin: 'realm-android' 
apply plugin: 'kotlin-android' 
apply plugin: 'kotlin-kapt' 
apply plugin: 'io.fabric' 
apply plugin: 'newrelic' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "25.0.2" 

    dataBinding { 
     enabled = true 
    } 

    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 

    signingConfigs { 
     config 
    } 

    defaultConfig { 
     applicationId "com.example.android" 
     targetSdkVersion 23 
     signingConfig signingConfigs.config 
     multiDexEnabled true 

     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 

    dexOptions { 
     javaMaxHeapSize "4g" 
    } 

    productFlavors { 
     dev { 
      // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin 
      // to pre-dex each module and produce an APK that can be tested on 
      // Android Lollipop without time consuming dex merging processes. 
      minSdkVersion 21 
     } 
     prod { 
      // The actual minSdkVersion for the application. 
      minSdkVersion 16 
     } 
    } 

    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFile 'proguard-support.pro' 
      proguardFile 'proguard-retrofit.pro' 
      proguardFile 'proguard-butterknife.pro' 
      proguardFile 'proguard-retrolambda.pro' 
      proguardFile 'proguard-crashlytics.pro' 
      proguardFile 'proguard-newrelic.pro' 
      proguardFile 'proguard-duktape.pro' 
      proguardFile 'proguard-packetzoom.pro' 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

    retrolambda { 
     jvmArgs '-noverify' 
    } 

    if (project.hasProperty('releaseKeyStore') && 
      project.hasProperty('releaseKeyPassword') && 
      project.hasProperty('releaseKeyStorePassword') && 
      project.hasProperty('releaseKeyAlias')) { 
     android.signingConfigs.config.keyAlias = releaseKeyAlias 
     android.signingConfigs.config.storeFile = file(releaseKeyStore) 
     android.signingConfigs.config.storePassword = releaseKeyStorePassword 
     android.signingConfigs.config.keyPassword = releaseKeyPassword 
    } else { 
     android.signingConfigs.config.keyAlias "" 
     android.signingConfigs.config.storeFile null 
     android.signingConfigs.config.storePassword "" 
     android.signingConfigs.config.keyPassword "" 
    } 

    testOptions { 
     unitTests.returnDefaultValues = true 
    } 

    sourceSets { 
     main.java.srcDirs += 'src/main/kotlin' 
     test.java.srcDirs += 'src/test/kotlin' 
     androidTest.java.srcDirs += 'src/androidTest/kotlin' 
    } 
} 

kapt { 
    generateStubs = true 
} 

dependencies { 
    kapt 'com.github.hotchemi:permissionsdispatcher-processor:2.0.8' 
    kapt 'com.google.dagger:dagger-compiler:2.2' 
    kapt "com.android.databinding:compiler:$androidPluginVersion" 
    kapt "io.realm:realm-annotations:1.0.0" 
    kapt "io.realm:realm-annotations-processor:1.0.0" 
    kapt 'com.jakewharton:butterknife:6.1.0' 
    kapt 'com.github.lukaspili.autodagger2:autodagger2-compiler:1.1' 
    provided 'org.glassfish:javax.annotation:10.0-b28' 
    compile 'com.android.support:multidex:1.0.1' 
    compile "com.android.support:appcompat-v7:$supportLibraryVersion" 
    compile "com.android.support:recyclerview-v7:$supportLibraryVersion" 
    compile "com.android.support:design:$supportLibraryVersion" 
    compile "com.android.support:percent:$supportLibraryVersion" 
    compile "com.android.support:gridlayout-v7:$supportLibraryVersion" 
    compile "com.android.support:cardview-v7:$supportLibraryVersion" 
    compile "com.android.support:customtabs:$supportLibraryVersion" 
    compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4' 
    compile 'io.reactivex:rxandroid:1.2.0' 
    compile 'io.reactivex:rxjava:1.1.4' 
    compile 'com.jakewharton.rxbinding:rxbinding:0.1.0' 
    compile 'com.trello:rxlifecycle:0.5.0' 
    compile 'com.trello:rxlifecycle-components:0.5.0' 
    compile 'com.trello:rxlifecycle-kotlin:0.5.0' 
    compile 'com.google.code.gson:gson:2.3.1' 
    compile 'com.google.dagger:dagger:2.2' 
    compile 'com.jakewharton:butterknife:6.1.0' 
    compile 'com.squareup.picasso:picasso:2.5.2' 
    compile 'me.relex:circleindicator:[email protected]' 
    compile 'com.jakewharton.timber:timber:3.0.2' 
    compile 'com.cocosw:bottomsheet:[email protected]' 
    compile "com.newrelic.agent.android:android-agent:$newRelicAgentLibraryVersion" 
    compile "com.newrelic.agent.android:class-rewriter:$newRelicAgentLibraryVersion" 
    compile 'me.tatarka:bindingcollectionadapter:0.15' 
    compile 'me.tatarka:bindingcollectionadapter-recyclerview:0.15' 
    compile 'com.github.pwittchen:reactivenetwork:0.1.3' 
    compile 'org.apmem.tools:layouts:[email protected]' 
    compile 'com.sothree.slidinguppanel:library:3.2.1' 
    compile 'com.squareup.duktape:duktape-android:0.9.5' 
    compile 'com.commonsware.cwac:provider:0.4.1' 
    compile "com.squareup.okhttp3:logging-interceptor:$okhttpVersion" 
    compile 'com.squareup.retrofit2:retrofit:2.0.2' 
    compile 'com.squareup.retrofit2:converter-gson:2.0.2' 
    compile 'com.squareup.retrofit2:converter-scalars:2.0.2' 
    compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2' 
    compile "com.packetzoom:pz-android-sdk:$packetZoomVersion" 
    compile "com.packetzoom:pz-okhttp3-interceptor:$packetZoomVersion" 
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" 
    compile 'org.jetbrains.kotlinx:kotlinx-support-jdk7:0.1' 
    compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
     transitive = true; 
    } 
    compile 'com.github.lukaspili.autodagger2:autodagger2:1.1' 
    compile 'com.google.firebase:firebase-messaging:9.4.0' 
    compile 'com.google.android.gms:play-services-analytics:9.4.0' 
    compile 'com.google.android.gms:play-services-gcm:9.4.0' 
    compile 'com.squareup.flow:flow:1.0.0-alpha2-SNAPSHOT' 

    testCompile 'junit:junit:4.12' 
    testCompile 'pl.pragmatists:JUnitParams:1.0.4' 
    testCompile "org.mockito:mockito-core:$mockitoLibraryVersion" 
    testCompile "org.powermock:powermock-api-mockito:$powermockLibraryVersion" 
    testCompile "org.powermock:powermock-module-junit4:$powermockLibraryVersion" 
    testCompile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" 
    testCompile "org.jetbrains.spek:spek-api:$spekLibraryVersion" 
    testCompile "org.jetbrains.spek:spek-junit-platform-engine:$spekLibraryVersion" 
    testCompile 'org.junit.platform:junit-platform-runner:1.0.0-M2' 
    testCompile "org.jetbrains.kotlin:kotlin-test:$kotlinVersion" 
    testCompile 'com.natpryce:hamkrest:1.2.3.0' 
    androidTestCompile "com.android.support.test:runner:$testSupportLibraryVersion" 
    androidTestCompile "com.android.support.test:rules:$testSupportLibraryVersion" 
    androidTestCompile 'com.google.dexmaker:dexmaker:1.2' 
    androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2' 
    androidTestCompile "org.mockito:mockito-core:$mockitoLibraryVersion" 
    androidTestCompile 'org.hamcrest:hamcrest-integration:1.3' 
    androidTestCompile 'org.hamcrest:hamcrest-core:1.3' 
    androidTestCompile 'org.hamcrest:hamcrest-library:1.3' 
    androidTestCompile "com.android.support:support-annotations:$supportLibraryVersion" 
} 

// Plugin declared at the bottom of the build.gradle file according to requirements described in documentation: 
// https://developers.google.com/android/guides/google-services-plugin#introduction 
apply plugin: 'com.google.gms.google-services' 

Comment puis-je résoudre le problème?

+1

Avez-vous des personnalisations remarquables dans votre 'build.gradle'? Pourriez-vous s'il vous plaît les partager? – hotkey

+1

Publication des fichiers 'build.gradle'. –

Répondre

0

Il s'avère que j'ai mal appliqué le plugin de Realm, de sorte que le problème est dans l'ordre de l'application de plugin. Le plug-in de domaine doit être appliqué après ceux de Kotlin:

apply plugin: 'kotlin-android' 
apply plugin: 'kotlin-kapt' 
apply plugin: 'realm-android' 

qui a résolu le problème pour moi.