Usar la class Kotlin en Java: no se puede encontrar el símbolo

He encontrado esta pregunta similar con respecto a Android, pero estoy usando Java simple con Maven como herramienta de compilation. Creo que es mejor publicar una nueva pregunta.

Creé una class Kotlin a la que trato de derivar de la class Java como MyKotlinClass.class . La compilation Maven falla, mientras que la compilation en IntelliJ Idea funciona bien. Ya he agregado el complemento de Kotlin a maven:

  <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>${kotlin.version}</version> <executions> <execution> <id>compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>test-compile</id> <phase>test-compile</phase> <goals> <goal>test-compile</goal> </goals> </execution> </executions> </plugin> 

Sin embargo eso no ayuda:

 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project app: Comstacktion failure [ERROR] MyClassLinkingKotlin.java:[100,40] error: cannot find symbol 

La línea / columna se refiere exactamente al símbolo MyKotlinClass.class . Fallará incluso cuando se usa así:

 System.err.println(MyKotlinClass.class) 

La configuration de Maven agrega el complemento del comstackdor de Kotlin, pero no ajusta la ejecución del complemento del comstackdor de Java para que el comstackdor de Java se ejecute después del comstackdor de Kotlin. Por lo tanto, el comstackdor de Java se ejecuta antes que Kotlin y no ve las classs comstackdas por Kotlin.

Aquí hay un fragment que muestra la configuration correcta para un proyecto de lenguaje mixto (tomado de la documentation ):

 <build> <plugins> <plugin> <artifactId>kotlin-maven-plugin</artifactId> <groupId>org.jetbrains.kotlin</groupId> <version>${kotlin.version}</version> <executions> <execution> <id>compile</id> <goals> <goal>compile</goal> </goals> <configuration> <sourceDirs> <sourceDir>${project.basedir}/src/main/kotlin</sourceDir> <sourceDir>${project.basedir}/src/main/java</sourceDir> </sourceDirs> </configuration> </execution> <execution> <id>test-compile</id> <goals> <goal>test-compile</goal> </goals> <configuration> <sourceDirs> <sourceDir>${project.basedir}/src/test/kotlin</sourceDir> <sourceDir>${project.basedir}/src/test/java</sourceDir> </sourceDirs> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <executions> <!-- Replacing default-compile as it is treated specially by maven --> <execution> <id>default-compile</id> <phase>none</phase> </execution> <!-- Replacing default-testCompile as it is treated specially by maven --> <execution> <id>default-testCompile</id> <phase>none</phase> </execution> <execution> <id>java-compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>java-test-compile</id> <phase>test-compile</phase> <goals> <goal>testCompile</goal> </goals> </execution> </executions> </plugin> </plugins> </build> 

Me encontré con este mismo error, pero tenía la configuration de pom correcta. Mi problema era que acababa de convertir una class Java en una class Kotlin con Intellij, que dejó ese file Kotlin en src/main/java .

La solución para mí fue crear un src/main/kotlin y mover mi class Kotlin allí, y dejar mis files Java en src/main/java . Pero definitivamente necesitas la configuration maven que muestra la respuesta de @ yole.

  • Kotlin: no puedo correr "hola mundo" en intellij
  • Escribir JSP en kotlin con maven - Error instanciando la class de servlet, ClassNotFoundException
  • Creación de jar ejecutable / uber con maven desde proyecto mezclado con Java y Kotlin
  • Mixto Kotlin + Java con Maven, reference no resuelta
  • Kotlin Android Library Module exportado con gradle maven-publish plugin sin agregar dependencies
  • Android Despliegue las fonts de kotlin a un repository de maven
  • ¿Cómo hago que IntelliJ respete el directory de salida del complemento Maven Kotlin?
  • Kotlin: ejecuta una testing de integración, el error `diversión principal ya está definido`
  • Configuración de Maven para usar Dagger 2 en un proyecto Java / Kotlin mixto
  • Intellij Idea no comstackrá kotlin pero maven lo hace
  • Referencia no resuelta de Kotlin en time de compilation