Kotlin可执行JAR报no main manifest attribute错误的解决咨询
解决Kotlin可执行JAR的
no main manifest attribute问题 方法一:修正IntelliJ IDEA构件配置
你的问题大概率是清单文件位置错误或构件配置未正确关联自定义清单,按以下步骤重新配置:
- 打开
File -> Project Structure(快捷键Cmd + ;),切换到Artifacts标签页 - 删除现有JAR构件,点击
+ -> JAR -> From modules with dependencies - 在弹出窗口中:
- 点击
Main Class右侧的选择按钮,选中MainKt(Kotlin顶层主函数会编译为该类) - 在
Manifest file区域,选择Create new manifest,并将路径指定为src/main/resources/META-INF/MANIFEST.MF(注意必须放在META-INF目录下,直接放在resources根目录会被构建忽略) - 勾选
Include in project build选项
- 点击
- 点击
OK保存配置,重新执行Build -> Build Artifacts... -> Build
构建完成后,打开JAR文件检查META-INF/MANIFEST.MF,确认包含Main-Class: MainKt属性,再运行java -jar your-jar-file.jar即可。
方法二:用Gradle构建(更可靠,推荐)
Kotlin项目默认使用Gradle,直接通过配置脚本构建可避免IDE配置问题:
- 打开项目根目录的
build.gradle.kts,添加以下配置:
plugins { kotlin("jvm") version "1.9.20" application // 启用应用插件 } application { mainClass.set("MainKt") // 指定主类 } // 构建包含依赖的可执行JAR(Fat Jar) tasks.jar { manifest { attributes["Main-Class"] = "MainKt" } from(sourceSets.main.get().output) dependsOn(configurations.runtimeClasspath) from({ configurations.runtimeClasspath.get() .filter { it.name.endsWith("jar") } .map { zipTree(it) } }) }
- 在终端执行命令:
./gradlew jar
- 生成的JAR文件位于
build/libs/目录下,直接运行java -jar build/libs/your-project-name.jar即可。
如果需要更简洁的Fat Jar构建,可使用Shadow插件:
- 在
build.gradle.kts中添加Shadow插件:
plugins { id("com.github.johnrengelman.shadow") version "8.1.1" } shadowJar { manifest { attributes["Main-Class"] = "MainKt" } }
- 执行
./gradlew shadowJar,生成的Fat Jar在build/libs/目录下(文件名带-all后缀)。
内容的提问来源于stack exchange,提问作者Mirza Dobric
相关产品推荐
相关产品推荐

