Incompatible porque este componente declara un componente compatible con Java 11 y el consumidor necesitaba un componente compatible con Java 10

5 minutos de lectura

Avatar de usuario de Thomas_SO
Thomas_SO

En mi archivo build.gradle actualicé la versión de una dependencia (a saber: com.db:microservice-commons). Después de cargar los cambios de Gradle, recibo el siguiente mensaje de error:

> Build file 'C:\Projects\Container\mschmidt\mount\booking-service\standalone\build.gradle' line: 50

   > A problem occurred evaluating project ':standalone'.
   > Could not resolve all files for configuration ':standalone:runtimeClasspath'.
   > Could not resolve com.db:microservice-commons:2.4.1.
     Required by:
         project :standalone
         project :standalone > project :service
      > No matching variant of com.db:microservice-commons:2.4.1 was found. The consumer was configured to find a runtime of a library compatible with Java 10, packaged as a jar, preferably optimized for standard JVMs, and its dependencies declared externally but:
          - Variant 'apiElements' capability com.db:microservice-commons:2.4.1 declares a library, packaged as a jar, and its dependencies declared externally:
              - Incompatible because this component declares an API of a component compatible with Java 11 and the consumer needed a runtime of a component compatible with Java 10
              - Other compatible attribute:
                  - Doesn't say anything about its target Java environment (preferred optimized for standard JVMs)
          - Variant 'runtimeElements' capability com.db:microservice-commons:2.4.1 declares a runtime of a library, packaged as a jar, and its dependencies declared externally:
              - Incompatible because this component declares a component compatible with Java 11 and the consumer needed a component compatible with Java 10
              - Other compatible attribute:
                  - Doesn't say anything about its target Java environment (preferred optimized for standard JVMs)
          - Variant 'samplessources' capability com.db:microservice-commons:2.4.1:
              - Incompatible because this component declares documentation and the consumer needed a library
              - Other compatible attributes:
                  - Doesn't say anything about how its dependencies are found (required its dependencies declared externally)
                  - Doesn't say anything about its target Java environment (preferred optimized for standard JVMs)
                  - Doesn't say anything about its target Java version (required compatibility with Java 10)
                  - Doesn't say anything about its elements (required them packaged as a jar)
                  - Doesn't say anything about its usage (required a runtime)

La línea 50+ del archivo ‘C:\Projects\Container\mschmidt\mount\booking-service\standalone\build.gradle’ tiene el siguiente aspecto:

manifest {
    def manifestClasspath = configurations.runtimeClasspath.collect { it.getName() }.join(' ')
    attributes 'Archiver-Version': 'Plexus Archiver'
    attributes 'Build-Jdk': org.gradle.internal.jvm.Jvm.current()
    attributes 'Main-Class': 'com.db.service.standalone.Standalone', 'Class-Path': manifestClasspath
    }
}

No tengo ni idea de qué hacer con esto. Project JDK y Gradle JVM están configurados para Java 11. Esta publicación aquí: El consumidor se configuró para encontrar un tiempo de ejecución de una biblioteca compatible con Java 11, empaquetada como un jar, y sus dependencias declaradas externamente pero: … se refiere a lo mismo problema pero no me ayudó.

¿Alguna idea de lo que está pasando aquí?

Con IntelliJ IDEA, tuve que cambiar qué JDK Gradle usaba para ejecutar. El valor original era JDK 11, lo cambié a JDK 17.

Captura de pantalla

  • Tuve el mismo problema con Android Studio (Electric Eel) en un nuevo proyecto. Actualizado el Gradle JDK a 11 del valor predeterminado 8 para arreglar la sincronización del proyecto.

    – qix

    14 de febrero a las 8:47

  • ¡Gracias! Revisé todas las configuraciones de la versión JDK específicas de mi proyecto y no encontré nada que todavía apuntara a 11, y me estaba volviendo loco. Pero esto solucionó el problema para mí.

    – bcody

    26 de mayo a las 7:15

Avatar de usuario de Thomas_SO
Thomas_SO

Encontré el problema y lo solucioné.

Cambié dos líneas definiendo la compatibilidad en el build.gradle archivo.

De:

compileOptions {
    sourceCompatibility 10
    targetCompatibility 10
}

A:

compileOptions {
    sourceCompatibility 11
    targetCompatibility 11
}

  • Nuestro equipo también se encontró con este problema. Fue causado por la versión Gradle de IntelliJ usando otra JVM. Para resolver esto, vaya a las preferencias: Build, Execution, Deployment> Build Tools> Gradle> Gradle JVM y cambie la versión de jvm allí

    – jvwilge

    2 de septiembre de 2022 a las 8:36


  • gracias @jvwilge, acabo de pasar una hora más o menos rascándome la cabeza después de declarar sourceCompatibility/targetCompatibility y ¡todavía me enfrento a este problema!

    – Renato

    9 de septiembre de 2022 a las 12:10

  • igualmente, gracias @jvwilge, he estado luchando durante horas.

    –Evan ​​Knowles

    20/09/2022 a las 11:40


  • Gracias @jvwilge. Estaba confundido por qué todavía menciona Java 8 a pesar de que configuré el JDK en 11 en Configuración del proyecto.

    – Aiono

    27/09/2022 a las 11:52

  • @jvwilge gracias hombre! Considere configurar su comentario como respuesta para ayudar a otras personas que no ven los comentarios.

    – Vrian7

    11 de enero a las 12:44

Cambie la versión de Java que usa Gradle. Como se muestra en la imagen a continuación, elija Java 11. Entonces está bien.
ingrese la descripción de la imagen aquí

  • igual que stackoverflow.com/a/75355554/19665422

    – Thorbjørn Andersen – UFST

    17 de marzo a las 12:26

  • Para aquellos que trabajan en múltiples proyectos con diferentes necesidades de versión, puede configurarlo en “Proyecto SDK” para que tenga como valor predeterminado el JDK especificado por las propiedades del proyecto (no tengo idea de por qué este no es el valor predeterminado).

    – FreakyDan

    12 abr a las 15:21

funciona para mí, cambie el código en el archivo app/build.gradle a esto:

android {
    compileSdkVersion 33

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }
    ...
}

o puede cambiarlo en la estructura de archivo/proyecto

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

en mi caso, no se trataba de la versión de Java. todavía permanece 1.8 (8). si está utilizando la última versión de Kotlin, debe actualizar su Versión Gradle a 6.7.1 o más alto en Estructura del proyecto. recomiendo cambiar Versión del complemento de Gradle a lo último Versión estable.

Avatar de usuario de Aman
Un hombre

Incompatible porque este componente declara una API de un componente compatible con Java 11 y el consumidor necesitaba un tiempo de ejecución de un componente compatible con Java 10

El significado de este error es que gradle quiere ejecutarse en SDK 11 y SDK proporcionado por la estructura de su proyecto es de la versión 10

También enfrenté el mismo problema al configurar el proyecto en intelliJ,

“Incompatible porque este componente declara una API de un componente compatible con Java 17 y el consumidor necesitaba un tiempo de ejecución de un componente compatible con Java 11”

Solución: descargué Java SE Development kit 17 e integré JDK 17 con la estructura del proyecto. Funciona.

avatar de usuario de johnnyasd12
johnnyasd12

Con IntelliJ IDEA, para mí funcionó con file -> invalidate caches -> invalidate and restart después de corregir la versión de Gradle JDK/JVM.

¿Ha sido útil esta solución?