You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle生成的示例项目执行Jar包报‘no main manifest attribute’错误

解决Gradle Application项目生成的Jar无主清单属性问题

问题原因

你配置的application.mainClass = "org.example.App"仅作用于gradlew run任务和tar/zip分发包的启动脚本,Gradle默认的jar任务不会自动将主类信息写入Jar的Manifest文件,所以直接用java -jar运行时会提示no main manifest attribute。

解决方案

方案1:修改默认Jar任务,添加主类清单属性

在你的构建脚本中添加以下配置,让jar任务生成的Jar包含主类信息:

tasks.named<Jar>("jar") {
    manifest {
        attributes["Main-Class"] = application.mainClass.get()
    }
}

执行gradlew jar后,生成的app/build/libs/app.jar就会包含Main-Class属性。注意:这个Jar仅包含项目自身代码,运行时需要手动指定依赖类路径,比如:

java -cp app/build/libs/app.jar:依赖路径/* org.example.App

方案2:生成包含所有依赖的可执行Fat Jar

如果希望生成一个能直接运行、包含所有依赖的Jar,可以使用Shadow插件:

  1. 先在plugins块中引入Shadow插件:
plugins {
    id("com.github.johnrengelman.shadow") version "8.1.1"
    application // 保留原有的application插件
}
  1. 执行gradlew shadowJar,生成的Fat Jar位于app/build/libs/app-all.jar
  2. 直接运行:
java -jar app/build/libs/app-all.jar

内容的提问来源于stack exchange,提问作者Christian Kelle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 17:36:01