Execution failed for task ':app:kaptDebugKotli

2019-07-08 09:15发布

问题:

I have problem about build project with cmd. When I build project with android studio is OK but when I clean project then build with cmd has error

This command:

gradlew assembleDebug

This error:

FAILURE: Build failed with an exception.

*What went wrong:

Execution failed for task ':app:kaptDebugKotlin'.

Internal compiler error. See log for more details

e: java.util.ServiceConfigurationError: javax.annotation.processing.Processor: android.databinding.annotationprocessor.ProcessDataBinding Unable to get public no-arg constructor at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:581) at java.base/java.util.ServiceLoader.getConstructor(ServiceLoader.java:672) at java.base/java.util.ServiceLoader.access$1000(ServiceLoader.java:390) at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1232) at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1264) ...

My app gradle:

    apply plugin: 'com.android.application'

    apply plugin: 'kotlin-android'

    apply plugin: 'kotlin-android-extensions'

    apply plugin: 'kotlin-kapt'

    android {
        compileSdkVersion 28
        defaultConfig {
            applicationId "com.example.robot.mvvm"
            minSdkVersion 21
            targetSdkVersion 28
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
            multiDexEnabled true
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        dataBinding {
            enabled = true
        }
        kapt {
            useBuildCache = true
        }
    }

    dependencies {
        def lifecycle_version = "2.0.0"
        def retrofit_version = '2.4.0'
        def okhttp_version = '3.11.0'
        def nav_version = "1.0.0-alpha06"

        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
        testImplementation 'junit:junit:4.12'

        //android KTX
        implementation 'androidx.core:core-ktx:1.0.0'
        implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
        implementation 'androidx.appcompat:appcompat:1.0.0'
        implementation 'com.google.android.material:material:1.0.0'
        androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'

        implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
        implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
        implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"

        //retrofit2
        kapt "com.squareup.retrofit2:retrofit:$retrofit_version"
        kapt "com.squareup.retrofit2:converter-gson:$retrofit_version"
        kapt "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version"

        //okhttp interceptor
        kapt "com.squareup.okhttp3:logging-interceptor:$okhttp_version"

        //Firebase
        implementation 'com.google.firebase:firebase-core:16.0.4'
        implementation 'com.crashlytics.sdk.android:crashlytics:2.9.5'
        implementation 'com.google.firebase:firebase-messaging:17.3.3'

        implementation "android.arch.navigation:navigation-fragment:$nav_version"
        implementation "android.arch.navigation:navigation-ui:$nav_version"

        // optional - Test helpers
        androidTestImplementation "android.arch.navigation:navigation-testing:$nav_version"


        implementation 'androidx.multidex:multidex:2.0.0'
    }

My project gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.2.71'
    repositories {
        google()
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.1.0' // google-services plugin

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Help me please. thank you

回答1:

I found solution
use Java SE 8



回答2:

While the accepted answer isn't very informative, it did point me in the right direction. My tests passed inside Android Studio but not from the command line because Android Studio was using the bundled JDK at /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home. I configured gradlew to use the same JDK by editing gradle.properties to include this line:

org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home

Now my tests pass inside Android Studio and from the command line.