使用 IntelliJ IDEA 创建 Kotlin jar 时“无主要清单属性”

Lau*_*eff 5 jvm manifest.mf manifest intellij-idea kotlin

当从我的 Kotlin 代码创建一个 jar 并运行它时,它说“没有主清单属性”。查看 manifest.mf 时,它包含以下内容:

Manifest-Version: 1.0
Run Code Online (Sandbox Code Playgroud)

查看源文件中的文件时,它具有以下内容:

Manifest-Version: 1.0
Main-Class: MyMainClass
Run Code Online (Sandbox Code Playgroud)

手动将源清单复制到 jar 时,它运行完美。

我的工件设置的屏幕截图

Syl*_*are 15

我在使用 Gradle 和 Kotlin 时遇到此错误。我必须添加build.gradle.kts一个显式的清单属性:

tasks.withType<Jar> {
    manifest {
        attributes["Main-Class"] = "com.example.MainKt"
    }
}
Run Code Online (Sandbox Code Playgroud)

gradle 文档来看,最好创建一个 fatJar 任务来包含所有运行时依赖项,以防遇到java.lang.NoClassDefFoundError错误


Cra*_*der 2

如果任何依赖 jar 具有文件MANIFEST.MF,它将覆盖定义Main-Class.

为了解决这个问题,您应该执行以下操作:

请参阅相关问题了解更多详细信息。

您还可以使用 Gradle 或 Maven 来生成 fat jar。