Зная имя вашего основного класса
В настоящее время (Kotlin начиная с M14, включая до 1,0 бета-версии), чтобы запустить класс Kotlin, вы фактически запускаете специальный класс, который создается на уровне файла, который содержит вашmain()
и другие функции верхнего уровня (вне класса или интерфейса).Поэтому, если ваш код:
// file App.kt
package com.my.stuff
public fun main(args: Array<String>) {
...
}
, вы можете запустить программу, запустив класс com.my.stuff.AppKt
.Это имя происходит от вашего имени файла с добавлением Kt
(предыдущие версии добавлены KT
, но из более поздних бета-версий и 1.0 - Kt
).Вы можете изменить имя этого класса в файле, добавив аннотацию, ориентированную на файл :
@file:JvmName("MyApp")
Или вы также можете поместить свой main()
в класс с сопутствующим объектоми сделайте это static
, используя аннотацию JvmStatic
.Поэтому вы выбрали именно то имя класса:
// file App.kt
package com.my.stuff
public class MyApp {
companion object {
@JvmStatic public fun main(args: Array<String>) {
...
}
}
}
Теперь для любого из этих методов вы просто запускаете класс com.my.stuff.MyApp
Какие еще JAR-файлы мне нужны?
Вам нужен JAR вашего приложения и любые зависимости.Для JAR-файлов, специфичных для Kotlin, за пределами Maven / Gradle вам нужен дистрибутив Kotlin, который содержит:
kotlin-runtime.jar
(комбинированная среда выполнения и stdlib) kotlin-reflect.jar
только при использовании отражения Kotlin kotlin-test.jar
для модульных тестов, использующих классы утверждений Kotlin
В Maven / Gradle в настоящее время также существует отдельный kotlin-stdlib.jar
, работающий от Intellij
Если в Intellij (если это ваша IDE) вы можете щелкнуть правой кнопкой мыши по функции main()
и выбрать «Выполнить», она создаст для вас конфигурацию времени выполнения и покажет полное имя класса, которое будет использоваться.Вы всегда можете использовать это, если не уверены в названии сгенерированного класса.
Запуск из Gradle
Вы также можете использовать плагин Gradle Application для запуска процессаиз Gradle, или для создания работающей системы, которая включает в себя zip / tgz вашего JAR-файла и все его зависимости, а также сценарий запуска.Используя приведенный выше пример класса, вы добавили бы это к вашему 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"]
А затем из командной строки используйте:
// run the program
gradle run
// debug the program
gradle run --debug-jvm
// create a distribution (distTar, distZip, installDist, ...)
gradle distTar
Запуск непосредственно из командной строки Java
Если у вас есть исполняемый JAR и предполагается, что KOTLIN_LIB
указывает на каталог, в котором находятся файлы библиотеки времени выполнения Kotlin:
java -cp $KOTLIN_LIB/kotlin-runtime.jar:MyApp.jar com.my.stuff.AppKt
См. Выше примечания о других файлах JAR, которые могут вам понадобиться.Небольшое отклонение, если у вас есть работающий JAR (с манифестом, указывающим на com.my.stuff.AppKt
в качестве основного класса):
java -cp $KOTLIN_LIB/kotlin-runtime.jar -jar MyApp.jar
Запуск с использованием инструмента командной строки Kotlin
Если вы устанавливаетеИнструменты Kotlin через Homebrew или другой менеджер пакетов.(в Mac OS X brew update ; brew install kotlin
) Затем запустить очень просто:
kotlin -cp MyApp.jar com.my.stuff.AppKt
Эта команда добавляет время выполнения к указанному пути к классам, а затем запускает класс.Возможно, вам придется добавить дополнительные библиотеки Kotlin, как указано в разделе выше «Запуск из Java».
Создание исполняемого JAR-файла с помощью компилятора Kotlin
Это не очень распространено, поскольку большинство людей используют другие инструменты сборки, но компилятор Kotlin может создать исполняемый Jar-файл, который решит эту проблему за вас (см. http://kotlinlang.org/docs/tutorials/command-line.html), когда он объединяет среду выполнения и ваш код. Хотя это не так часто встречается при использовании таких инструментов, как Maven и Gradle, или сборок IDE. Затем запустите с использованием обычной Java:
java -jar MyApp.jar