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 está comprando desde src / main / kotlin mientras usa maven
  • Dónde poner index.html en un proyecto de Kotlin-js?
  • Maven-publish gradle plugin se salta la versión
  • Javalin tutorial yielding "Referencia sin resolver: AtomicInteger"
  • ¿Cómo hago que IntelliJ respete el directory de salida del complemento Maven Kotlin?
  • Error al intentar crear una instancia de una class Kotlin de Java
  • BeanDefinitionParsingException cuando se intenta usar JPA con Kotlin y Spring boot
  • Eclipse Aether no resuelve `MÁS RECIENTE` correctamente
  • ¿Por qué IntelliJ Idea no encuentra las dependencies de Maven de otro module de Kotlin?
  • No se puede conseguir que las classs de Kotlin en el proyecto Java maven funcionen (Eclipse)
  • ¿Qué tipo de dependencia tiene el pepino kotlin?