Saltar al contenido

¿Cómo ejecutar la clase Kotlin desde la línea de comandos?

Solución:

Saber el nombre de su clase principal

Para ejecutar una clase de Kotlin, en realidad está ejecutando una clase especial que se crea en el nivel de archivo que contiene su main() y otras funciones de nivel superior (fuera de una clase o interfaz). Entonces, si su código es:

// file App.kt
package com.my.stuff

fun main(args: Array<String>) {
  ...
}

Luego puede ejecutar el programa ejecutando el com.my.stuff.AppKt clase. Este nombre se deriva de su nombre de archivo con Kt adjunto. Puede cambiar el nombre de esta clase dentro del archivo agregando esta anotación dirigida al archivo:

@file:JvmName("Foo")  

También puedes poner tu main() en una clase con un objeto complementario y conviértalo static utilizando el JvmStatic anotación. Por lo tanto, el nombre de su clase es el que eligió:

// file App.kt
package com.my.stuff

class MyApp {
    companion object {
        @JvmStatic fun main(args: Array<String>) {
          ...
        }
    }
}

Ahora solo ejecuta la clase com.my.stuff.MyApp

¿Qué otros archivos JAR necesito?

Necesita su aplicación JAR y cualquier dependencia. Para los archivos JAR específicos de Kotlin cuando se encuentra fuera de Maven / Gradle, necesita una distribución de Kotlin que contenga:

  • kotlin-stdlib.jar (la biblioteca estándar)
  • kotlin-reflect.jar solo si se usa la reflexión de Kotlin
  • kotlin-test.jar para pruebas unitarias que utilizan clases de aserción de Kotlin

Corriendo desde Intellij

Si está en Intellij (si es su IDE) puede hacer clic derecho en el main() y seleccione Ejecutar, creará una configuración de tiempo de ejecución para usted y mostrará el nombre de clase completo que se utilizará. Siempre puede usar eso si no está seguro del nombre de la clase generada.

Corriendo desde Gradle

También puede usar el complemento de la aplicación Gradle para ejecutar un proceso desde Gradle o para crear un sistema ejecutable que incluya un zip / tgz de su JAR y todas sus dependencias, y un script de inicio. Usando la clase de ejemplo anterior, agregaría esto a su build.gradle:

apply plugin: 'application'

mainClassName="com.my.stuff.AppKt"

// optional:  add one string per argument you want as the default JVM args
applicationDefaultJvmArgs = ["-Xms512m", "-Xmx1g"] 

Y luego, desde la línea de comandos, use:

// run the program
gradle run

// debug the program
gradle run --debug-jvm

// create a distribution (distTar, distZip, installDist, ...)
gradle distTar

Ejecutando directamente desde la línea de comandos de Java

Si tiene un JAR ejecutable y asumiendo KOTLIN_LIB apunta a un directorio donde residen los archivos de la biblioteca en tiempo de ejecución de Kotlin:

java -cp $KOTLIN_LIB/kotlin-stdlib.jar:MyApp.jar com.my.stuff.AppKt

Consulte las notas anteriores sobre otros archivos JAR que pueda necesitar. Una ligera variación si tiene un JAR ejecutable (con el manifiesto apuntando a com.my.stuff.AppKt como clase principal):

java -cp $KOTLIN_LIB/kotlin-stdlib.jar -jar MyApp.jar

Ejecutar con la herramienta de línea de comandos de Kotlin

Si instala las herramientas de Kotlin a través de Homebrew u otro administrador de paquetes. (en Mac OS X brew update ; brew install kotlin) Entonces es muy simple de ejecutar:

kotlin -cp MyApp.jar com.my.stuff.AppKt

Este comando agrega stdlib a la ruta de clases proporcionada, luego ejecuta la clase. Es posible que deba agregar bibliotecas de Kotlin adicionales como se menciona en la sección anterior “Ejecución desde Java”.

Creando JAR ejecutable con el compilador Kotlin

Esto no es muy común ya que la mayoría de la gente usa otras herramientas de compilación, pero el compilador de Kotlin puede crear un Jar ejecutable que resuelve esto por usted (vea http://kotlinlang.org/docs/tutorials/command-line.html) cuando se agrupa el tiempo de ejecución y su código juntos. Aunque esto no es tan común cuando se utilizan herramientas como Maven y Gradle, o compilaciones IDE. Luego ejecute usando el Java normal:

java -jar MyApp.jar

Puedes compilar usando kotlinc como sigue:

$ kotlinc hello.kt -include-runtime -d hello.jar

y luego puede ejecutar el archivo jar de la siguiente manera:

$ java -jar hello.jar

También luché con esto por un tiempo. Estás cerca, solo necesitas incluir tu jar en la ruta de clases y pasar el nombre calificado de tu clase “principal” como argumento principal a java.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *