Execution failed for task ':app:kaptDebugKotli

2019-07-08 08:58发布

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

2条回答
男人必须洒脱
2楼-- · 2019-07-08 09:18

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.

查看更多
老娘就宠你
3楼-- · 2019-07-08 09:20

I found solution
use Java SE 8

查看更多
登录 后发表回答