Error al intentar crear una instancia de una class Kotlin de Java

Estoy intentando crear una instancia de una class Kotlin de Java, pero cada vez que bash comstackr con Maven obtengo el error cannot find symbol :

 class ConfigCommand(private val game: Game) : Command("config", "") { init { addAliases("cfg") } override fun getRequinetworkingRank(): Rank? { return null } override fun getDescription(): String { return "Shows the config for the game" } @Throws(CommandException::class) override fun execute(sender: CommandSender, args: Array<String>): Boolean { if (args.isEmpty()) { if (sender !is Player) throw NoConsoleAccessException() sender.openInventory(ConfigGUI(game).build()) return true } return false } } 

No estoy seguro de por qué no se formateó correctamente, pero de todos modos antes de convertirlo a una class de Kotlin funcionó, pero tengo que registrar este command en mi class principal, que es una class de Java. Cuando bash instanciar una class Kotlin de una class Java, no hay errores en el IDE, pero cuando voy a comstackrlo, maven grita

 cannot find symbol [ERROR] symbol: class ConfigCommand 

Todavía estoy descifrando Kotlin, pero traté de trabajar con algunas permutaciones basadas en tu ejemplo. Pude crear fácilmente tu problema basado en tu Hastebin pom.

Tenías razón en que cambiar la <phase> a process-sources hizo que mi código de testing se comstackra en Maven, pero (honestamente) no siempre puedo recordar todas las fases de Maven fuera de mi cabeza así no estaría cómodo. cambiando a fonts de process sin más investigación, especialmente dado que las herramientas IntelliJ dependen de la fase de compile .

Después de jugar con mis propios ejemplos de interoperabilidad, parece que el elemento crítico (y que falta en los valores de las herramientas) es el elemento <sourceDirectory> como elemento secundario de nivel superior de <build> como en:

 <build> <sourceDirectory>src/main/java</sourceDirectory> <plugins> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>${kotlin.version}</version> <executions> <execution> <id>compile</id> 

Agregar el <sourceDirectory> como un elemento de nivel superior en <build> hizo que comstackra mi código de interoperabilidad Java to Kotlin cuando ejecuté el mvn compile terminal. Eso fue cierto cuando mezclé los files fuente en el directory "java" para contener los files Java y Kotlin.

Como nota al margen (y no entiendo por qué mientras escribo esto), cuando agregué "Kotlin" como parte de mi nombre de class a mi fuente de Kotlin, no necesité agregar el elemento <sourceDirectory>

Después de pasar por esta página varias veces y darme count de que no había hecho nada mal, comencé a perder el time con mi pom y eventualmente lo puse a funcionar cambiando la fase de compilation de Kotlin a process-sources

El maven-compiler-plugin agrega las ejecuciones default-compile y default-testCompile que se ejecutan primero en las fases correspondientes.

Para usar las classs de Kotlin en el código de Java, necesita ejecutar el comstackdor de Kotlin antes de que se ejecute el comstackdor de Java. Una forma de hacerlo es progtwigr su ejecución para process-sources fase de las process-sources . Otro enfoque es "no progtwigr" las ejecuciones pnetworkingeterminadas del complemento de Java y progtwigr nuevas ejecuciones en su lugar después de la ejecución del complemento de Kotlin.

Las ejecuciones pnetworkingeterminadas del complemento de Java están desactivadas con esta sección de pom.xml:

  <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> ... </executions> </plugin> 

Y luego se agregan nuevas ejecuciones:

  <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> 

El ejemplo completo se muestra aquí: https://kotlinlang.org/docs/reference/using-maven.html#compiling-kotlin-and-java-sources

  • ¿Por qué aparece el error "No se encontraron descriptores de ensamblado" al crear este proyecto?
  • Usando las properties sintéticas de Kotlin
  • problemas del comstackdor de Kotlin para la class no resuelta
  • Usar las extensiones de resources de Kotlin para Android usando solo Maven
  • Maven-publish gradle plugin se salta la versión
  • ¿Cómo hago la compilation de post-compilation en Maven?
  • ¿Por qué IntelliJ Idea no encuentra las dependencies de Maven de otro module de Kotlin?
  • ¿Cómo se comstack el proyecto Java + Kotlin con Maven?
  • Sistema local de administración de packages Java en Python PIP style?
  • Intellij IDEA no agrega dependencies maven a la ruta de classs de scripts de Kotlin
  • Error de compilation en Eclipse en el proyecto Kotlin + Java, pero el proyecto se comstack con Maven