gradle no puede comstackr classs de Java usando la class kotlin

Tengo un multiproyecto de gradle 4.1 que contiene un "proyecto A" que contiene 2 subcarpetas "api" e "implementación".

El multiproyecto usa los kotlin y java-library definidos en la sección de subproyectos del build.gradle principal. El proyecto de implementación tiene una dependencia API para :projectA:api

En la carpeta api tengo files kotlin y java dentro de 'src / main / java' y en el proyecto de implementación estoy creando una nueva instancia de una class kotlin desde la API.

Dentro de Intellij Idea, no tengo ningún error de compilation; pero cuando compilo todo el proyecto usando gradle tengo un error: cannot find symbol . Es como si compileJava no tuviera acceso a la carpeta kotlin-classes .

Dentro de build/kotlin-classes , veo mi file. Class El file de class está en build / classes dir también

Detalles del error:

Tarea: projectA: api: compileKotlin Uso de la compilation incremental de kotlin

Tarea: projectA: implementation: compileJava (…) error: no se puede encontrar el símbolo (la import falla)

Actualización 1 : eliminar java-library resolvió mi problema

Este es un problema conocido del plugin java-library : cuando se utiliza en un proyecto con otro lenguaje JVM (Kotlin, Scala, Groovy, etc.), no registra las classs del otro idioma para que los proyectos dependientes los obtengan ya que consumir las classs

Afortunadamente, también tiene una solución. Adaptado a Kotlin, se vería así:

 configurations { apiElements { outgoing.variants.getByName('classes').artifact( file: compileKotlin.destinationDir, type: ArtifactTypeDefinition.JVM_CLASS_DIRECTORY, builtBy: compileKotlin) } } 

Si usa Kapt1, es el file: compileKotlinAfterJava.destinationDir , y para las versiones de Gradle inferiores a 4.0 use builtBy: copyMainKotlinClasses en builtBy: copyMainKotlinClasses lugar.

Este problema también se rastrea en el rastreador de problemas de Kotlin: KT-18497 , siga ese tema para ver cuándo está arreglado en el lado del plugin de Kotlin Gradle, de modo que la solución anterior no será más necesaria.

  • Recursión de Kotlin
  • Crea una instancia de anotación en Kotlin
  • ¿Hay alguna manera de hacer reference a la class de Java para una function de nivel superior de Kotlin?
  • ¿Puede Delegates.observable () ser serializable?
  • "Algunas bibliotecas de Kotlin conectadas a este proyecto tienen un formatting no compatible. Actualice las bibliotecas o el complemento"
  • Kotlin class NoClassDefFoundError crash
  • TestScheduler no funciona (Kotlin + RxJava2 + mockito)
  • Kotlin - ¿Cómo "lateinit" una var anulada de una interfaz?
  • El process de anotación de Kotlin ignora elementos con nombres similares
  • ¿Cómo crear una instancia de una class abstracta en Kotlin?
  • Gradle. Kotlin: ¿es posible crear tareas dinámicas ("en vuelo")?