当从我的kotlin代码创建jar并运行它时,它说“没有主清单属性”。查看manifest.mf时,它包含以下内容:
Manifest-Version: 1.0
在源代码中查看文件时,它包含以下内容:
Manifest-Version: 1.0 Main-Class: MyMainClass
当手动将源清单复制到jar时,它运行得非常好。我的工件设置截图
wribegjk1#
如果任何依赖jar具有 MANIFEST.MF 文件,它将覆盖定义 Main-Class .为了解决此问题,您应该执行以下操作:禁用字母顺序更改项目顺序,以便 META-INF/MANIFEST.MF 文件是列表中的第一个你的习惯 MANIFEST.MF 将由intellij idea拾取并显示jar工件。有关详细信息,请参阅相关问题。您也可以使用gradle或maven来生成fat jar。
MANIFEST.MF
Main-Class
META-INF/MANIFEST.MF
uidvcgyl2#
我和gradle和kotlin犯了个错误。我不得不加上 build.gradle.kts 显式清单属性:
build.gradle.kts
tasks.withType<Jar> { manifest { attributes["Main-Class"] = "com.example.MainKt" } }
在gradle文档中,最好创建一个fatjar任务来扩展所有运行时依赖项,以防遇到问题 java.lang.NoClassDefFoundError 错误
java.lang.NoClassDefFoundError
2条答案
按热度按时间wribegjk1#
如果任何依赖jar具有
MANIFEST.MF
文件,它将覆盖定义Main-Class
.为了解决此问题,您应该执行以下操作:
禁用字母顺序
更改项目顺序,以便
META-INF/MANIFEST.MF
文件是列表中的第一个你的习惯
MANIFEST.MF
将由intellij idea拾取并显示jar工件。有关详细信息,请参阅相关问题。
您也可以使用gradle或maven来生成fat jar。
uidvcgyl2#
我和gradle和kotlin犯了个错误。我不得不加上
build.gradle.kts
显式清单属性:在gradle文档中,最好创建一个fatjar任务来扩展所有运行时依赖项,以防遇到问题
java.lang.NoClassDefFoundError
错误