Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RoomProcessor compilation or a circular dependency

I've been struggling for days with and issue with Android Room component.

All I did was upgrade my Android studio from 3.3 to 3.4.1, this comes with changes to gradle etc that are done. I've even tried going back to 3.3, but nothing is working. I've have run with Run with --info or --debug option to try see more details but nothing gives me more info. Please help

e: /.../app/build/tmp/kapt3/stubs/debug/com/.../model/HotspotEntity.java:7: error: [RoomProcessor:MiscError] androidx.room.RoomProcessor was unable to process this class because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code.
public final class HotspotEntity implements android.os.Parcelable {
             ^
e: /.../app/build/tmp/kapt3/stubs/debug/com/.../ConditionEntity.java:7: error: [RoomProcessor:MiscError] androidx.room.RoomProcessor "same as above".
public final class ConditionEntity implements android.os.Parcelable {
             ^
e: /.../app/build/tmp/kapt3/stubs/debug/com/.../model/AdLimits.java:6: error: [RoomProcessor:MiscError] androidx.room.RoomProcessor "same as above"
public final class AdLimits {
             ^
e: /.../app/build/tmp/kapt3/stubs/debug/com/.../model/AdTarget.java:6: error: [RoomProcessor:MiscError] androidx.room.RoomProcessor "same as above"
public final class AdTarget {
             ^
e: /.../app/build/tmp/kapt3/stubs/debug/com/.../model/AdUrl.java:6: error: [RoomProcessor:MiscError] androidx.room.RoomProcessor "same as above"
public final class AdUrl {
             ^

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:kaptDebugKotlin'.
> Compilation error. See log for more details

Versions

Android Gradle:
3.4.1
Gradle version:
5.4.1
Android Room:
def room_version = "2.1.0-alpha06"
implementation 'androidx.room:room-runtime:' + room_version
kapt 'androidx.room:room-compiler:' + room_version
testImplementation 'androidx.room:room-testing:' + room_version

----UPDATE----

Below was tried with room 2.1.0-rc01"which changed it to the same problem but for a different class:

AppDatabase.java:8: error: [RoomProcessor:MiscError] androidx.room.RoomProcessor was unable to process this class because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code.
public abstract class AppDatabase extends androidx.room.RoomDatabase {

Grade File

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: "androidx.navigation.safeargs.kotlin"

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.cfl.surfstoked"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 19
        versionName "1.0.4"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        debug {
            debuggable true
        }

        release {
            debuggable false
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    repositories {
        mavenCentral()
    }

    lintOptions {
        checkReleaseBuilds false
    }

    configurations {
        cleanedAnnotations
        compile.exclude group: 'org.jetbrains', module: 'annotations'
    }
}

dependencies {
    kapt 'com.google.dagger:dagger-android-processor:2.23.1'

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.0.2'

    def lifecycleVersion = "2.1.0-alpha02"
    implementation 'androidx.lifecycle:lifecycle-extensions:' + lifecycleVersion
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:' + lifecycleVersion
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0-alpha01'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.0.0'
    kapt 'androidx.lifecycle:lifecycle-compiler:' + lifecycleVersion

    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'

    //DI
    def koinVersion = "1.0.2"
    implementation 'org.koin:koin-android:' + koinVersion
    implementation 'org.koin:koin-androidx-scope:' + koinVersion
    implementation 'org.koin:koin-androidx-viewmodel:' + koinVersion

    //Navigation
//    def navigationVersion = "1.0.0-beta02"
//    implementation 'android.arch.navigation:navigation-fragment-ktx:' + navigationVersion
//    implementation 'android.arch.navigation:navigation-ui-ktx:' + navigationVersion

    def navigationVersion = "2.1.0-alpha01"
    implementation 'androidx.navigation:navigation-fragment-ktx:' + navigationVersion
    implementation 'androidx.navigation:navigation-ui-ktx:' + navigationVersion

    implementation 'org.greenrobot:eventbus:3.1.1'

    //Coroutines
    def corutinesVersion = "1.1.1"
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:' + corutinesVersion
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:' + corutinesVersion

    //Database
    def room_version = "2.1.0-rc01"
    implementation 'androidx.room:room-runtime:' + room_version
    kapt 'androidx.room:room-compiler:' + room_version
//    implementation 'androidx.room:room-coroutines:' + room_version
    testImplementation 'androidx.room:room-testing:' + room_version

}

apply plugin: 'com.google.gms.google-services'

app dependencies

debugCompileClasspath - Compile classpath for compilation 'debug' (target  (androidJvm)).
+--- org.jetbrains.kotlin:kotlin-android-extensions-runtime:{strictly 1.3.30} -> 1.3.30 (c)
+--- org.jetbrains.kotlin:kotlin-stdlib:{strictly 1.3.30} -> 1.3.30 (c)
+--- org.jetbrains.kotlin:kotlin-stdlib-common:{strictly 1.3.30} -> 1.3.30 (c)
+--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:{strictly 1.3.30} -> 1.3.30 (c)
+--- androidx.core:core-ktx:{strictly 1.0.2} -> 1.0.2 (c)
+--- androidx.annotation:annotation:{strictly 1.1.0-rc01} -> 1.1.0-rc01 (c)
+--- androidx.core:core:{strictly 1.1.0-alpha05} -> 1.1.0-alpha05 (c)
+--- com.google.guava:listenablefuture:{strictly 9999.0-empty-to-avoid-conflict-with-guava} -> 9999.0-empty-to-avoid-conflict-with-guava (c)
+--- androidx.lifecycle:lifecycle-runtime:{strictly 2.2.0-alpha01} -> 2.2.0-alpha01 (c)
+--- androidx.lifecycle:lifecycle-common:{strictly 2.2.0-alpha01} -> 2.2.0-alpha01 (c)
+--- androidx.arch.core:core-common:{strictly 2.1.0-beta01} -> 2.1.0-beta01 (c)
+--- androidx.versionedparcelable:versionedparcelable:{strictly 1.1.0-alpha02} -> 1.1.0-alpha02 (c)
+--- androidx.collection:collection:{strictly 1.1.0-alpha03} -> 1.1.0-alpha03 (c)
+--- androidx.concurrent:concurrent-futures:{strictly 1.0.0-alpha02} -> 1.0.0-alpha02 (c)
+--- androidx.lifecycle:lifecycle-extensions:{strictly 2.2.0-alpha01} -> 2.2.0-alpha01 (c)
+--- androidx.arch.core:core-runtime:{strictly 2.1.0-beta01} -> 2.1.0-beta01 (c)
+--- androidx.fragment:fragment:{strictly 1.1.0-alpha05} -> 1.1.0-alpha05 (c)
+--- androidx.viewpager:viewpager:{strictly 1.0.0} -> 1.0.0 (c)
+--- androidx.customview:customview:{strictly 1.0.0} -> 1.0.0 (c)
+--- androidx.loader:loader:{strictly 1.0.0} -> 1.0.0 (c)
+--- androidx.lifecycle:lifecycle-livedata:{strictly 2.2.0-alpha01} -> 2.2.0-alpha01 (c)
+--- androidx.lifecycle:lifecycle-livedata-core:{strictly 2.2.0-alpha01} -> 2.2.0-alpha01 (c)
+--- androidx.lifecycle:lifecycle-viewmodel:{strictly 2.2.0-alpha01} -> 2.2.0-alpha01 (c)
+--- androidx.activity:activity:{strictly 1.0.0-alpha05} -> 1.0.0-alpha05 (c)
+--- androidx.savedstate:savedstate:{strictly 1.0.0-alpha02} -> 1.0.0-alpha02 (c)
+--- androidx.lifecycle:lifecycle-process:{strictly 2.2.0-alpha01} -> 2.2.0-alpha01 (c)
+--- androidx.lifecycle:lifecycle-service:{strictly 2.2.0-alpha01} -> 2.2.0-alpha01 (c)
+--- androidx.lifecycle:lifecycle-viewmodel-ktx:{strictly 2.1.0-alpha02} -> 2.1.0-alpha02 (c)
+--- org.jetbrains.kotlinx:kotlinx-coroutines-android:{strictly 1.1.1} -> 1.1.1 (c)
+--- org.jetbrains.kotlinx:kotlinx-coroutines-core:{strictly 1.1.1} -> 1.1.1 (c)
+--- org.jetbrains.kotlinx:kotlinx-coroutines-core-common:{strictly 1.1.1} -> 1.1.1 (c)
+--- androidx.appcompat:appcompat:{strictly 1.0.2} -> 1.0.2 (c)
+--- androidx.cursoradapter:cursoradapter:{strictly 1.0.0} -> 1.0.0 (c)
+--- androidx.legacy:legacy-support-core-utils:{strictly 1.0.0} -> 1.0.0 (c)
+--- androidx.documentfile:documentfile:{strictly 1.0.0} -> 1.0.0 (c)
+--- androidx.localbroadcastmanager:localbroadcastmanager:{strictly 1.0.0} -> 1.0.0 (c)
+--- androidx.print:print:{strictly 1.0.0} -> 1.0.0 (c)
...
+--- androidx.room:room-runtime:{strictly 2.1.0-rc01} -> 2.1.0-rc01 (c)
+--- androidx.room:room-common:{strictly 2.1.0-rc01} -> 2.1.0-rc01 (c)
+--- androidx.sqlite:sqlite-framework:{strictly 2.0.1} -> 2.0.1 (c)
+--- androidx.sqlite:sqlite:{strictly 2.0.1} -> 2.0.1 (c)
+--- com.jakewharton.timber:timber:{strictly 4.7.1} -> 4.7.1 (c)
+--- org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.30
|    \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.30
|         \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.30
+--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.30
...
+--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1 (*)
+--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1 (*)
+--- androidx.room:room-runtime:2.1.0-rc01
|    +--- androidx.room:room-common:2.1.0-rc01
|    |    \--- androidx.annotation:annotation:1.1.0-rc01
|    +--- androidx.sqlite:sqlite-framework:2.0.1
|    |    +--- androidx.annotation:annotation:1.0.2 -> 1.1.0-rc01
|    |    \--- androidx.sqlite:sqlite:2.0.1
|    |         \--- androidx.annotation:annotation:1.0.2 -> 1.1.0-rc01
|    +--- androidx.sqlite:sqlite:2.0.1 (*)
|    +--- androidx.arch.core:core-runtime:2.0.1 -> 2.1.0-beta01 (*)
|    +--- androidx.core:core:1.0.0 -> 1.1.0-alpha05 (*)
|    \--- androidx.collection:collection:1.0.0 -> 1.1.0-alpha03 (*)
like image 795
cfl Avatar asked Jun 13 '19 15:06

cfl


3 Answers

You must include the library:

implementation org.jetbrains:annotations-java5:19.0.0

Because the code which is generated out of the annotations through the kapt plugin, uses org.jetbrains.annotations.NotNull annotation.

It you copy-paste the generated java class is your classpath, you will see the compilation error.

Cheers

like image 108
Marco Hernaiz Avatar answered Jan 03 '23 12:01

Marco Hernaiz


From the initial lookup some of your dependencies are old. Please try the following setup ran and tested by me.

Android Studio : 3.4.1

build.gradle (project)

dependencies {
    classpath 'com.android.tools.build:gradle:3.4.1'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.31"
    classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.1.0-alpha05"
    classpath 'com.google.gms:google-services:4.2.0'
}

build.gradle (app)

android {
    compileSdkVersion 29
    defaultConfig {
        targetSdkVersion 29
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    kapt 'com.google.dagger:dagger-android-processor:2.23.1'

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.31"
    implementation 'androidx.core:core-ktx:1.0.2'

    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0-alpha01'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0-alpha01'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0-alpha01'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.0.0'
    kapt 'androidx.lifecycle:lifecycle-compiler:2.2.0-alpha01'

    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'

    //DI
    implementation 'org.koin:koin-android:1.0.2'
    implementation 'org.koin:koin-androidx-scope:1.0.2'
    implementation 'org.koin:koin-androidx-viewmodel:1.0.2'

    implementation 'org.greenrobot:eventbus:3.1.1'

    //Coroutines
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1'

    //Database
    implementation 'androidx.room:room-runtime:2.1.0'
    kapt 'androidx.room:room-compiler:2.1.0'
    testImplementation 'androidx.room:room-testing:2.1.0'
}
like image 27
Prokash Sarkar Avatar answered Jan 03 '23 11:01

Prokash Sarkar


I had run into the same problem, and comparing the OP's gradle file with mine, I found that both contained

configurations {
    cleanedAnnotations
    compile.exclude group: 'org.jetbrains', module: 'annotations'
}

By removing it, Room's annotation processing started to work.

like image 31
mtotschnig Avatar answered Jan 03 '23 13:01

mtotschnig