question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Gradle error: Cannot choose between the following variants of org.kodein.di:kodein-di-core:6.4.1

See original GitHub issue

I get the following Gradle error at compile time when trying to build simple Hello World code, as a preparation to play with Kodein, using Intellij IDEA 2019.2.3 CE. How do I fix it?

Main.kt

fun main() {
    println("Hello, World!")
}

build.gradle

dependencies {
    implementation 'org.kodein.di:kodein-di-generic-jvm:6.4.1'
}

Project SDK JDK 1.8.0_222

Error

Execution failed for task ':kaptKotlin'.
> Could not resolve all files for configuration ':_classStructurekaptKotlin'.
   > Could not resolve org.kodein.di:kodein-di-core:6.4.1.
     Required by:
         project : > org.kodein.di:kodein-di-generic-jvm:6.4.1
      > Cannot choose between the following variants of org.kodein.di:kodein-di-core:6.4.1:
          - androidArm32-api
          - androidArm64-api
          - iosArm32-api
          - iosArm64-api
          - iosX64-api
          - js-api
          - js-runtime
          - jvm-api
          - jvm-runtime
          - linuxArm32Hfp-api
          - linuxMips32-api
          - linuxMipsel32-api
          - linuxX64-api
          - macosX64-api
          - metadata-api
          - mingwX64-api
          - wasm32-api
        All of them match the consumer attributes:
          - Variant 'androidArm32-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.native.target 'android_arm32' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'native' but wasn't required.
          - Variant 'androidArm64-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.native.target 'android_arm64' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'native' but wasn't required.
          - Variant 'iosArm32-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.native.target 'ios_arm32' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'native' but wasn't required.
          - Variant 'iosArm64-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.native.target 'ios_arm64' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'native' but wasn't required.
          - Variant 'iosX64-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.native.target 'ios_x64' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'native' but wasn't required.
          - Variant 'js-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'js' but wasn't required.
          - Variant 'js-runtime' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-runtime' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'js' but wasn't required.
          - Variant 'jvm-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.libraryelements 'jar' but wasn't required.
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'java-api' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'jvm' but wasn't required.
          - Variant 'jvm-runtime' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.libraryelements 'jar' but wasn't required.
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'java-runtime' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'jvm' but wasn't required.
          - Variant 'linuxArm32Hfp-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.native.target 'linux_arm32_hfp' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'native' but wasn't required.
          - Variant 'linuxMips32-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.native.target 'linux_mips32' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'native' but wasn't required.
          - Variant 'linuxMipsel32-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.native.target 'linux_mipsel32' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'native' but wasn't required.
          - Variant 'linuxX64-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.native.target 'linux_x64' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'native' but wasn't required.
          - Variant 'macosX64-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.native.target 'macos_x64' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'native' but wasn't required.
          - Variant 'metadata-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'common' but wasn't required.
          - Variant 'mingwX64-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.native.target 'mingw_x64' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'native' but wasn't required.
          - Variant 'wasm32-api' capability org.kodein.di:kodein-di-core:6.4.1:
              - Unmatched attributes:
                  - Found org.gradle.status 'release' but wasn't required.
                  - Found org.gradle.usage 'kotlin-api' but wasn't required.
                  - Found org.jetbrains.kotlin.native.target 'wasm32' but wasn't required.
                  - Found org.jetbrains.kotlin.platform.type 'native' but wasn't required.

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Comments:14 (8 by maintainers)

github_iconTop GitHub Comments

7reactions
dimanychcommented, Feb 1, 2020

Groovy version:

// FIX KAPT incapacity to find the right variant
// https://youtrack.jetbrains.com/issue/KT-31641
def usage = Attribute.of('org.gradle.usage', Usage)

dependencies {
    attributesSchema {
        attribute(usage)
    }
}

configurations.all {
    afterEvaluate {
        if (canBeResolved) {
            attributes.attribute(usage, project.objects.named(Usage, "java-runtime"))
        }
    }
}
// END FIX KAPT incapacity to find the right variant

1reaction
martinbonnincommented, May 7, 2021

If anyone comes here, a more defensive workaround is to only add the attribute if it’s not defined:

// FIX KAPT incapacity to find the right variant
// https://youtrack.jetbrains.com/issue/KT-31641
val usage = Attribute.of("org.gradle.usage", Usage::class.java)

dependencies {
  attributesSchema {
    attribute(usage)
  }
}

configurations.all {
    afterEvaluate {
        if (isCanBeResolved && !attributes.contains(usage)) {
            attributes {
                attribute(usage, project.objects.named(Usage::class.java, "java-runtime"))
            }
        }
    }
}

This prevents other plugins/configurations relying on Usage to have their values overriden (see https://github.com/apollographql/apollo-android/issues/3098)

Read more comments on GitHub >

github_iconTop Results From Across the Web

Gradle error: Cannot choose between the following variants of ...
I get the following Gradle error at compile time when trying to build simple Hello World code, as a preparation to play with...
Read more >
Error: Cannot choose between the following variants
Hello, I'm trying to upgrade this project from Spring Boot 2.2.4 to 2.4.3 but now I'm running into a Gradle issue: Script ...
Read more >
Cannot choose between the following variants of project ...
First step: try removing implementation project(':SomeModule') , if in this case the app is running without this error then try to add path ......
Read more >
Gradle sync fails: Cannot choose between the following ...
Error message: Unable to resolve dependency for ':app@paidRelease/compileClasspath': Could not resolve project :mylibrary. Could not resolve project :mylibrary.
Read more >
Cannot choose between the following variants of `org ...
plugins { id "org.jetbrains.kotlin.jvm" version("1.7.0") id "java-gradle-plugin" } repositories { mavenCentral() google() } ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found