Ответ 1
Зная имя вашего основного класса
Чтобы запустить класс Kotlin, вы фактически запускаете специальный класс, который создается на уровне файлов, который содержит ваш main()
и другие функции верхнего уровня (вне класса или интерфейса). Так что, если ваш код:
// file App.kt
package com.my.stuff
fun main(args: Array<String>) {
...
}
Затем вы можете выполнить программу, запустив класс com.my.stuff.AppKt
. Это имя происходит от вашего имени файла с добавленным Kt
. Вы можете изменить имя этого класса в файле, добавив эту аннотацию, ориентированную на файл:
@file:JvmName("Foo")
Вы также можете поместить main()
в класс с сопутствующим объектом и сделать его static
используя аннотацию JvmStatic
. Поэтому ваше имя класса - то, которое вы выбрали:
// file App.kt
package com.my.stuff
class MyApp {
companion object {
@JvmStatic fun main(args: Array<String>) {
...
}
}
}
Теперь вы просто запускаете класс com.my.stuff.MyApp
Какие другие файлы JAR мне нужны?
Вам нужен JAR вашего приложения и любые зависимости. Для JAR, специфичных для Kotlin, за пределами Maven/Gradle вам нужен дистрибутив Kotlin, который содержит:
-
kotlin-stdlib.jar
(стандартная библиотека) -
kotlin-reflect.jar
только при использовании отражения Kotlin -
kotlin-test.jar
для модульных тестов, использующих классы утверждений Kotlin
Бег от Интеллидж
Если в 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-stdlib.jar:MyApp.jar com.my.stuff.AppKt
См. Примечания выше о других файлах JAR, которые могут вам понадобиться. Небольшое изменение, если у вас есть исполняемый JAR (с манифестом, указывающим на com.my.stuff.AppKt
в качестве основного класса):
java -cp $KOTLIN_LIB/kotlin-stdlib.jar -jar MyApp.jar
Запуск с использованием инструмента командной строки Kotlin
Если вы устанавливаете инструменты Kotlin через Homebrew или другой менеджер пакетов. (в Mac OS X brew update; brew install kotlin
) Затем запустить очень просто:
kotlin -cp MyApp.jar com.my.stuff.AppKt
Эта команда добавляет stdlib к предоставленному пути к классам, а затем запускает класс. Возможно, вам придется добавить дополнительные библиотеки Kotlin, как указано в разделе выше "Запуск из Java".
Создание работоспособного JAR с помощью компилятора Kotlin
Это не очень распространено, так как большинство людей используют другие инструменты сборки, но компилятор Kotlin может создать исполняемый файл Jar, который решит эту проблему за вас (см. Http://kotlinlang.org/docs/tutorials/command-line.html), когда он входит в комплект среда выполнения и ваш код вместе. Хотя это не так часто встречается при использовании таких инструментов, как Maven и Gradle, или сборок IDE. Затем запустите с использованием обычной Java:
java -jar MyApp.jar