Некорректно собирается jar-файл: no main manifest attribute

Собранный в идее (Intellij IDEA) jar-файл не запускается со следующей ошибкой:

no main manifest attribute, in .../MyJarFilename.jar

Запускать пробую следующей командой: java -jar MyJarFilename.jar.

MANIFEST.MF выглядит следующим образом:

Manifest-Version: 2.0
Main-Class: lobaevni.et.MainKt
Class-Path: lobaevni.et

build.gradle.kts выглядит следующим образом:

plugins {
    kotlin("jvm") version "2.0.20"
    kotlin("plugin.serialization") version "2.0.20"
    application
}

group = "lobaevni.et"
version = "2.1"

repositories {
    mavenCentral()
}

dependencies {
    # тут ещё куча всяких зависимостей, не суть...

    implementation("org.jetbrains.kotlinx:kotlinx-cli:0.3.5")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0")
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")

    implementation("io.ktor:ktor-server-netty:3.0.0-rc-1")

    implementation("org.slf4j:slf4j-simple:2.0.16")

    testImplementation(kotlin("test"))
    testImplementation("org.mockito.kotlin:mockito-kotlin:3.2.0")
    testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0")
}

tasks.test {
    useJUnitPlatform()
}

kotlin {
    jvmToolchain(11)
}

Собираю jar-файл в идее через меню Build -> Build artifacts -> Build. Предварительно в File -> Project Structure -> Project settings -> Artifacts добавил конфигурацию для сборки JAR -> From modules with dependencies.

Пересмотрел огромное количество документаций, всяких ответов на форумах по подобной проблеме, но решения так и не нашёл. Пробовал добавлять следующие строки в свой build.gradle.kts, но это не решало проблему:

application {
    mainClass.set("lobaevni.et.MainKt")
}

tasks.withType<Jar> {
    manifest {
        attributes["Main-Class"] = "lobaevni.et.MainKt"
        attributes["Class-Path"] = "lobaevni.et"
    }
}

Пробовал полностью чистить кеши идеи, перезапускать её, удалять папки с билдами и т.д. - тоже ни на что не влияло.

Я сразу отмечу, что я не силён в тонкостях сборки и gradle. Я понимаю процесс сборки так, что в мой jar-файл кладутся собранные подключённые библиотеки, которые я использовал в своей программе, также собранная моя программа, и в этом jar-файле это всё аккуратно линкуется с помощью манифеста, в котором собственно и прописывается инструкция для запуска, чтобы java понимала, какой класс является точкой входа (ну это если прям грубо говоря, я просто на пальцах объяснил, как я это всё понимаю). Вот только не доходит никак до java, где лежит мой заветный Main.kt с функцией main.

Кстати, сам Main.kt выглядит следующим образом (это я уж на всякий случай прикрепил, package указан):

package lobaevni.et

...

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

Ответы (1 шт):

Автор решения: nick

https://www.jetbrains.com/help/idea/create-your-first-kotlin-app.html?section=Gradle%20Kotlin#run-the-jar - здесь полное актуальное описание, как правильно собирать jar-файл. Указал дополнительные инструкции в build.gradle.kts, jar-файл успешно собрался и теперь запускается как надо. Я раньше по другим инструкциям собирал, как указал в вопросе - так не работает.

→ Ссылка