使用intellij idea创建kotlin jar时“没有主清单属性”

rsl1atfo  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(917)

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

Manifest-Version: 1.0

在源代码中查看文件时,它包含以下内容:

Manifest-Version: 1.0
Main-Class: MyMainClass

当手动将源清单复制到jar时,它运行得非常好。
我的工件设置截图

wribegjk

wribegjk1#

如果任何依赖jar具有 MANIFEST.MF 文件,它将覆盖定义 Main-Class .
为了解决此问题,您应该执行以下操作:
禁用字母顺序
更改项目顺序,以便 META-INF/MANIFEST.MF 文件是列表中的第一个
你的习惯 MANIFEST.MF 将由intellij idea拾取并显示jar工件。
有关详细信息,请参阅相关问题。
您也可以使用gradle或maven来生成fat jar。

uidvcgyl

uidvcgyl2#

我和gradle和kotlin犯了个错误。我不得不加上 build.gradle.kts 显式清单属性:

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

在gradle文档中,最好创建一个fatjar任务来扩展所有运行时依赖项,以防遇到问题 java.lang.NoClassDefFoundError 错误

相关问题