使用IntelliJ IDEA创建Kotlin jar时,“没有主清单属性”

时间:2019-02-26 19:13:40

标签: intellij-idea kotlin jvm manifest manifest.mf

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

Manifest-Version: 1.0

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

Manifest-Version: 1.0
Main-Class: MyMainClass

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

Screenshot of my artifact settings

3 个答案:

答案 0 :(得分:1)

如果任何相关的jar都有一个MANIFEST.MF文件,它将覆盖定义Main-Class的自定义文件。

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

有关更多详细信息,请参见related issue

您也可以改用Gradle或Maven来生成胖子。

答案 1 :(得分:1)

我在Gradle和Kotlin遇到此错误。 我必须在build.gradle.kts中添加一个明确的清单属性:

tasks.withType<Jar> {
    manifest {
        attributes["Main-Class"] = "com.example.MainKt"
    }
}

gradle documentation开始,最好创建一个fatJar任务,以囊括所有运行时依赖项,以防遇到java.lang.NoClassDefFoundError错误

答案 2 :(得分:0)

1.在构建脚本中添加如下任务定义

tasks.jar {
manifest {
    attributes["Main-Class"] = "MainKt"
}
configurations["compileClasspath"].forEach { file: File ->
    from(zipTree(file.absoluteFile))
}
}
  1. 然后是右侧边栏中的 jar 任务 (Tasks | build | jar)。