从我的Kotlin代码创建一个jar并运行它时,它显示“无主清单属性”。 查看manifest.mf时,它具有以下内容:
Manifest-Version: 1.0
在源文件中查看文件时,它具有以下内容:
Manifest-Version: 1.0
Main-Class: MyMainClass
当手动将源清单复制到jar时,它可以完美运行。
答案 0 :(得分:1)
如果任何相关的jar都有一个MANIFEST.MF
文件,它将覆盖定义Main-Class
的自定义文件。
为了解决此问题,您应该执行以下操作:
META-INF/MANIFEST.MF
文件的项目在列表中排在第一位MANIFEST.MF
将由IntelliJ IDEA和displayed for the jar工件拾取。有关更多详细信息,请参见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))
}
}