Как запустить интерактивную программу на Kotlin в командной строке

Вопрос или проблема

Пример кода можно найти по адресу https://github.com/KyleMcB/demo. Я не могу разобраться, как запустить приложение на Kotlin JVM из командной строки. IntelliJ запускает его в своей встроенной оболочке с интерактивным вводом, но я хочу распределить это как программу командной строки. Программа просто пытается использовать readln()

fun main() {
    val name = readln()
    println("Hello, " + name + "!")
}

Когда я использую ./gradlew run, я получаю

euclid@kyles-MBP-3 ~/D/democli (main)> ./gradlew clean run

> Задача :run НЕУДАЧА
Ошибка: Не удалось найти или загрузить главный класс MainKt
Причина: java.lang.ClassNotFoundException: MainKt

НЕУДАЧА: Сборка завершилась с исключением.

* Что пошло не так:
Ошибка выполнения задачи ':run'.
> Процесс 'команда '/Users/euclid/Library/Java/JavaVirtualMachines/corretto-19.0.2/Contents/Home/bin/java'' завершился с ненулевым кодом выхода 1

* Попробуйте:
> Запустите с параметром --stacktrace, чтобы получить трассировку стека.
> Запустите с параметром --info или --debug, чтобы получить больше вывода в журнал.
> Запустите с параметром --scan, чтобы получить полные сведения.
> Получите больше помощи на https://help.gradle.org.

СБОРКА НЕ УДАЛАСЬ за 545 мс
3 действия, которые можно выполнить: 3 выполнены

Когда я пытаюсь запустить скрипт в папке сборки, я получаю

euclid@kyles-MBP-3 ~/D/democli (main)> build/scripts/democli
Ошибка: Не удалось найти или загрузить главный класс MainKt
Причина: java.lang.ClassNotFoundException: MainKt

Как я могу запустить приложение командной строки на jvm?

Ответ или решение

Чтобы запустить интерактивное приложение на Kotlin через командную строку, следуйте следующим шагам:

  1. Убедитесь, что у вас установлен Kotlin и Gradle. Если вы еще не установили Kotlin, вы можете скачать его с официального сайта Kotlin и установить для использования с Gradle.

  2. Настройка проекта Gradle. Вам необходимо убедиться, что ваш проект правильно настроен. В вашем build.gradle.kts (или build.gradle в Groovy) необходимо указать правильные зависимости и конфигурации. Пример настройки для проекта Kotlin:

plugins {
    kotlin("jvm") version "1.8.0" // Убедитесь, что у вас установлена последняя версия Kotlin
}

repositories {
    mavenCentral()
}

dependencies {
    implementation(kotlin("stdlib"))
}

tasks.register<JavaExec>("runApp") {
    group = "application"
    description = "Запускает приложение"
    classpath = sourceSets.main.get().runtimeClasspath
    mainClass.set("MainKt") // Убедитесь, что это имя вашего файла с функцией main, например Main.kt
}
  1. Создание файла с кодом. Убедитесь, что ваш файл с кодом (например, Main.kt) находится в src/main/kotlin. Ваш код должен выглядеть так:
fun main() {
    val name = readln()
    println("Hello, $name!")
}
  1. Сборка проекта. С помощью Gradle соберите проект с командой:
./gradlew build
  1. Запуск приложения. Запустите ваше приложение с помощью заранее определенной задачи runApp:
./gradlew runApp

Если вы хотите запустить его напрямую из скомпилированного кода, убедитесь, что вы используете правильный путь к классам:

java -cp build/classes/kotlin/main MainKt
  1. Проверка на ошибки. Если вы сталкиваетесь с ошибками, такими как ClassNotFoundException, проверьте, правильно ли вы указали имя класса. В Kotlin класс, содержащий функцию main, компилируется в класс с именем MainKt, если функция расположена в файле Main.kt.

Если ошибка продолжает появляться, убедитесь, что у вас есть правильная структура директорий и правильно указан путь к скомпилированным классам.

С этими шагами ваше приложение на Kotlin должно успешно запускаться в командной строке.

Оцените материал
Добавить комментарий

Капча загружается...