Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Execution failed for task ':app:kaptDebugKotlin'. when clean build

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

like image 719
Narawit Withee Avatar asked Dec 17 '22 20:12

Narawit Withee


2 Answers

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.

like image 70
Big McLargeHuge Avatar answered Dec 30 '22 11:12

Big McLargeHuge


I found solution
use Java SE 8

like image 33
Narawit Withee Avatar answered Dec 30 '22 11:12

Narawit Withee