Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

345
Visualizações
¿Por qué Kotlin JDK8 también incluye Kotlin JDK7 en el classpath?

Estoy usando Kotlin para crear un servicio web y me topé con lo que considero una extraña curiosidad. Con este build.gradle:

 group 'com.example' version '0.1.0' buildscript { ext.kotlinVersion = '1.2.71' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" } } apply plugin: 'kotlin' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion" compile 'com.fasterxml.jackson.module:jackson-module-kotlin:2.9.8' } compileKotlin { kotlinOptions.jvmTarget = "1.8" } compileTestKotlin { kotlinOptions.jvmTarget = "1.8" }

Me sale este error durante la compilación:

 w: Runtime JAR files in the classpath should have the same version. These files were found in the classpath: .../kotlin-stdlib-jdk8-1.2.71.jar (version 1.2) .../kotlin-stdlib-jdk7-1.2.71.jar (version 1.2) .../kotlin-reflect-1.3.10.jar (version 1.3) .../kotlin-stdlib-1.3.10.jar (version 1.3) .../kotlin-stdlib-common-1.3.10.jar (version 1.3)

Bien, no hay problema, jackson-module-kotlin está incorporando las dependencias de kotlin 1.3. Puedo excluirlos. Pero lo que me llamó la atención fue la segunda línea. kotlin-stdlib-jdk8 también está kotlin-stdlib-jdk7 . De hecho, puedo excluirlo y todo sigue funcionando como se esperaba:

 compile("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion") { exclude group: "org.jetbrains.kotlin", module: "kotlin-stdlib-jdk7" }

¿Por qué kotlin-stdlib-jdk8 está introduciendo en mi classpath el kotlin-stdlib-jdk7 aparentemente innecesario?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

La advertencia que ve durante la compilación ocurre porque la dependencia jackson-module-kotlin:2.9.8 aparentemente trae kotlin-stdlib:1.3.10 al classpath y esa versión anula su dependencia declarada en 1.2.71. Para evitar advertencias, debe migrar su proyecto a Kotlin 1.3.x o degradar la dependencia de jackson-module-kotlin a alguna versión anterior que dependa de Kotlin 1.2.x.

kotlin-stdlib-jdk8 es una adición sobre kotlin-stdlib-jdk7 , y la última es una adición sobre kotlin-stdlib . No debe excluir estas dependencias transitivas, de lo contrario, podría obtener errores de tiempo de ejecución.

over 4 years ago · Santiago Trujillo Relatório

0

El kotlin-stdlib-common , kotlin-stdlib-jdk7 y kotlin-stdlib-jdk8 parecen ser mutuamente excluyentes por lo que pude ver dentro de los frascos. Es por eso que necesita el artefacto jdk7 incluso si usa jdk8.

El kotlin-stdlib-jdk7 solo contiene cosas que se agregaron en JDK7 como AutoCloseable y otras API internas. Esto no está incluido en el artefacto JDK8, que solo incluye elementos agregados en JDK8.

Si no usa las funciones globales use o closeFinally , su código debería funcionar bien sin el artefacto jdk7, pero no hay una razón real para excluir este jar en mi humilde opinión.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda