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.

  • ¿Por qué esta aplicación Spring Boot no puede encontrar la página principal?
  • ¿Cuál es la forma correcta de crear y publicar la biblioteca de Kotlin para evitar el problema de múltiples times de ejecución?
  • cómo especificar el order de plugin de comstackdor maven
  • Error al intentar crear una instancia de una class Kotlin de Java
  • Montaje de Kotlin + Maven: sin atributo de manifiesto principal
  • error: los generics no son compatibles en -source 1.3 al comstackr el código de Java con Kotlin
  • ¿Por qué IntelliJ Idea no encuentra las dependencies de Maven de otro module de Kotlin?
  • ¿Por qué mi compilation Kotlin falla utilizando Kotlin-Maven-Plugin?
  • ¿Cómo hago la compilation de post-compilation en Maven?
  • Manipulación de DOM con Javascript de Kotlin en el proyecto Eclipse Maven
  • ¿Qué tipo de dependencia tiene el pepino kotlin?