Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

error: supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath

Ask Question

Gradle log:

error: supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath: class android.support.v7.app.AppCompatActivity, unresolved supertypes: SupportParentable

build.gradle (app)

buildscript {
    ext.android_plugin_version = "2.3.3"
    ext.kotlin_version = '1.1.2-5'
    repositories {
        maven { url 'https://maven.google.com' }
        maven { url "https://jitpack.io" }
        mavenCentral()
    dependencies {
        classpath "com.android.tools.build:gradle:$android_plugin_version"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
allprojects {
    repositories {
        maven { url 'https://maven.google.com' }
        maven { url "https://jitpack.io" }
        mavenCentral()
task clean(type: Delete) {
    delete rootProject.buildDir
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
def compat_version = '26.+'
def play_services_version = '11.0.1'
def firebase_version = '9.6.1'
android {
    compileSdkVersion 26
    buildToolsVersion "26.0.0"
    defaultConfig {
        applicationId "com.site.app"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ["library" : "true"]
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    dexOptions {
        javaMaxHeapSize "4g"
    dataBinding {
        enabled true
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
kapt {
    generateStubs = true
    correctErrorTypes = true
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    testCompile 'junit:junit:4.12'
    // android
    compile 'com.android.support:multidex:1.0.1'
    compile "com.android.support:appcompat-v7:${compat_version}"
    compile "com.android.support:design:${compat_version}"
    compile "com.android.support:cardview-v7:${compat_version}"
    compile "com.android.support:recyclerview-v7:${compat_version}"
    compile "com.android.support:gridlayout-v7:${compat_version}"
    compile "com.google.android.gms:play-services:${play_services_version}"
    compile "com.google.android.gms:play-services-ads:${play_services_version}"
    compile "com.google.android.gms:play-services-maps:${play_services_version}"
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.maps.android:android-maps-utils:0.4+'
    kapt "com.android.databinding:compiler:$android_plugin_version"
    // kotlin
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
    testCompile "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
    testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"

In my case I had a library module with an abstract application class implementing Dagger's HasActivityInjector and an application module with a dependency to the library and its own (non-abstract) application class extending the base app class.

My Gradle dependencies were implementations, and therefore not accessible to the application module's application class (even though there were no imports there, otherwise the issue would be immediately obvious as you'd get a 'could not resolve' error. The fix was to replace dagger implementation dependencies with api, that makes them available to dependant modules as well.

I have forgotten to add the Dagger dependency to the module whose class I was using. implementation should be enough, if it is explicitly added to the module. (Thanks for the idea btw, you saved me from a couple hours debugging.) – andras Nov 26, 2018 at 7:20 do you mean if we use the library by "adding it as module", then we need to write dependencies defined in that library in "app" module? why? – Malwinder Singh May 21, 2019 at 8:19 In my case this error was happening when trying to access a method on a fragment. To avoid applying api configuration just for this error, I just created an interface and implement it on the fragment. – Rubén Viguera Sep 19, 2019 at 16:35 @oblakr24 What is you do not want to use api and you want to remain implementation? The issue lies with inheritance using an abstract class. Is there any work other workarounds for this without changing implementation to api? – portfoliobuilder Jan 3, 2020 at 2:20 i had a similar problem in dagger hilt, in the module with an abstract class I DID NOT have a dependency on dagger (only had the javax.inject:javax.inject:1 dependency), after I added the dagger dependencies in the module with an abstract class the problem got resolved – konnovdev May 14, 2022 at 5:18 maven { url "https://maven.google.com" } maven { url 'https://maven.fabric.io/public' } maven { url "https://jitpack.io" } dependencies { classpath "com.android.tools.build:gradle:$android_plugin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" classpath 'io.fabric.tools:gradle:1.+' allprojects { repositories { jcenter() mavenCentral() maven { url "https://maven.google.com" } maven { url 'https://maven.fabric.io/public' } maven { url "https://jitpack.io" } task clean(type: Delete) { delete rootProject.buildDir

app/build.gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'io.fabric'
android {
    compileSdkVersion 26
    buildToolsVersion "26.0.0"
    defaultConfig {
        applicationId "com.sample.app"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    buildTypes {
        debug {
            ext.alwaysUpdateBuildId = false
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    dexOptions {
        javaMaxHeapSize "4g"
    dataBinding {
        enabled true
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    lintOptions {
        abortOnError false
        disable 'InvalidPackage'
kapt {
    generateStubs = true
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    testCompile 'junit:junit:4.12'
    // kotlin
    kapt "com.android.databinding:compiler:$android_plugin_version"
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    // android
    compile 'com.android.support:multidex:1.0.1'
    compile "com.android.support:appcompat-v7:${compat_version}"
    compile "com.android.support:design:${compat_version}"
    compile "com.android.support:cardview-v7:${compat_version}"
    compile "com.android.support:recyclerview-v7:${compat_version}"
    compile "com.android.support:gridlayout-v7:${compat_version}"
    compile "com.android.support:support-vector-drawable:${compat_version}"
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile "com.google.android.gms:play-services-ads:${play_services_version}"
    compile "com.google.android.gms:play-services-maps:${play_services_version}"
    compile "com.google.android.gms:play-services-gcm:${play_services_version}"
    compile 'com.google.maps.android:android-maps-utils:0.4+'
    // fabric
    compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
        transitive = true;
    // logger
    compile 'com.orhanobut:logger:2.1.1'
    // dexter
    compile 'com.karumi:dexter:4.1.0'
    // firebase
    compile "com.google.firebase:firebase-messaging:${firebase_version}"
    // persistence
    compile "android.arch.persistence.room:runtime:1.0.0-alpha3"
    annotationProcessor "android.arch.persistence.room:compiler:1.0.0-alpha3"
    // facebook
    compile 'com.facebook.android:facebook-android-sdk:4.+'
    // retrofit
    compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.squareup.retrofit2:converter-gson:2.3.0'
    // gson
    compile 'com.google.code.gson:gson:2.8.1'
    // jobs
    compile 'com.evernote:android-job:1.1.11'
    // chart
    compile 'com.github.PhilJay:MPAndroidChart:v3.0.1'
    // fresco
    compile 'com.facebook.fresco:fresco:1.3.0'
    // indicator
    compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'

For me the problem was child module not using AndroidX Activity. I guess the class names clashed.

Added this to resolve:

implementation 'androidx.legacy:legacy-support-v4:1.0.0'

(App)-----depends----(library)

In my case I did not change any dependencies configuration nor i change the order. I had to copy a local pojo(model) jar file from the library module to App.

App is in kotlin library is in java

Its a bug, I should not have pojo.jar in app and library

This solution worked. Thanks. Can we do it without moving library dependencies to app module? Did you find any solution? – Suneesh Ambatt Jul 25, 2022 at 11:55 This does not answer the question and should be removed. If you want to comment on a post, you should provide actual answers to earn the reputation necessary to comment (which is 50, see privileges) – finnmglas Jul 30, 2020 at 14:12 @broc.seib It appeared to be more of a comment than an answer (especially as Sangeetha's reputation was below 50). The question was solved by other answers showing the problem was way more complex than something that goes away by rebuilding :D – finnmglas Jan 29, 2021 at 17:56 @finnmglas Thanks that you are very much concerned about the answer and Even I had the same problem and it is solved by just rebuilding my project and I thought it might help him and I hope I didn't add something which is not necessary on this forum – Sangeetha Sakthivel Mar 27, 2021 at 15:14

Well in my case this error randomly occurs which usually occurs during execution through Android Studio.

The root cause was that My Activity class were extending some interfaces which was in another nested package:

package tv.activities

public class MainActivity implements MyListener {

package tv.activities.error

interface MyListener {

Hence it usually happens during execution but after second run it resolves automatically so no one bother to resolve it. Sometimes Android Studio fail to recognise that interface is accessible so there is no sense of showing error for the same:

Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:
    class tv.activities.MainActivity, unresolved supertypes: MyListener

Final Solution:

Making interface public resolves this issue permanently.

public interface MyListener {

Or refactor the package accessibility where AS doesn't get confuse

On my case I had to add the required dependency on my main module and compile the last version with:

android {
    configurations.all {
        resolutionStrategy.force "com.squareup.picasso:picasso:${picassoVersion}"

I was getting error for below lib in app level build.gradle

  implementation 'com.google.firebase:firebase-iid:20.0.2'

So the solution is the order in project level build.gradle, So before solving error the structure was

buildscript {
ext.kotlin_version = '1.3.50'
repositories {
    google()
    jcenter()
    mavenCentral()
    maven {
        url "https://maven.google.com"
dependencies {
    classpath 'com.android.tools.build:gradle:3.5.3'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3'
    classpath 'com.google.gms:google-services:4.3.3'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
allprojects {
repositories {
    google()
    jcenter()
    mavenCentral()
    maven {
        url "https://maven.google.com" // Google's Maven repository
task clean(type: Delete) {
delete rootProject.buildDir

After Solving the error the struture is :

buildscript {
ext.kotlin_version = '1.3.50'
repositories {
     maven {
        url "https://maven.google.com"
    google()
    jcenter()
    mavenCentral()
dependencies {
    classpath 'com.android.tools.build:gradle:3.5.3'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3'
    classpath 'com.google.gms:google-services:4.3.3'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
allprojects {
repositories {
    maven {
        url "https://maven.google.com" // Google's Maven repository
    google()
    jcenter()
    mavenCentral()
task clean(type: Delete) {
delete rootProject.buildDir

By default it tries to download using google() as it comes first in the sequence but when we move maven on top of all then it creates the build again using maven and the build succeeds. Cheers :)

When setting up the crashlytics to my app, I used "recommended" dependency as well, as shown below. But this was the part causes error.

// Firebase Crashlytics
// (Recommended) Add the Google Analytics dependency.
implementation 'com.google.firebase:firebase-analytics:17.2.1'
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'

Removing "analytics" line solved my problem.

// Firebase Crashlytics
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'

Hope this helps someone else too,

I fixed this error upgrading others libraries. My error showed when I added firebase=ads (from google adsmob). So I found a conflict in my firebase-auth (16.0.5) and firebase ads (19.0.1).

Migrating firebase to 19.3.0 solved the problem.

In my case, I had removed an unused OnFragmentInteractionListener in a fragment:

public interface OnFragmentInteractionListener {
    // TODO: Update argument type and name
    void onFragmentInteraction(Uri uri);

However, In my activity I had failed to remove a reference to this OnFragmentInteractionListener :

public class MainActivity extends AppCompatActivity implements
        MyFragment.OnFragmentInteractionListener {

Strangely, instead of giving an error that indicated the OnFragmentInteractionListener was not found, I received the above "supertypes of the following classes cannot be resolved" with no reference to the classes.

In my case, I went to the project structure and updated all firebase dependencies to the latest and the highest. At the moment here are implementations with their versions:

    implementation 'com.google.firebase:firebase-auth:19.3.1'
    implementation 'com.google.firebase:firebase-database:19.3.1'
    implementation 'com.google.firebase:firebase-storage:19.1.1'
    implementation 'com.google.firebase:firebase-analytics:17.4.3'
                This does not provide an answer to the question. Once you have sufficient reputation you will be able to comment on any post; instead, provide answers that don't require clarification from the asker. - From Review
– Omkar
                Jun 16, 2022 at 12:54
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.