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

Spring Boot项目打包Jar报错:no main manifest attribute问题排查

Spring Boot可运行Jar包生成指南(解决"no main manifest attribute"错误)

一、别用IntelliJ的Build Artifacts打包(踩坑预警)

你当前用的Build > Build Artifacts是普通Java项目的打包流程,完全不适配Spring Boot的可执行Jar逻辑——它不会自动处理Spring Boot的依赖打包和Manifest特殊配置,这就是你报错的核心原因。

二、Gradle官方打包方式(最靠谱)

既然用的是Gradle,直接用Spring Boot提供的bootJar任务就行:

  • 打开IntelliJ右侧的Gradle面板(没显示的话,按Ctrl+Shift+A搜索"Gradle"打开)
  • 展开项目下的Tasks > build,双击bootJar
  • 打包完成后,可运行Jar在build/libs/目录下,文件名格式一般是项目名-版本号.jar

也可以直接在终端执行命令打包:

# Linux/Mac
./gradlew bootJar

# Windows
gradlew bootJar

这个Jar包自带所有依赖,Manifest里的Main-Class(Spring Boot的JarLauncher)和Start-Class(你的主类)都会自动配置好,直接执行java -jar 文件名.jar就能启动。

三、如果非要用Build Artifacts(不推荐)

硬要走这个流程的话,必须做两个关键配置:

  1. Artifact配置添加所有依赖:在Artifact设置界面,把项目的所有依赖(包括Spring Boot的starter依赖)都添加到"Output Layout"里,不然Jar包会缺少依赖。
  2. 修正Manifest属性:Spring Boot的可执行Jar不能直接用你的主类当Main-Class,必须用Spring Boot的启动器。确保你的MANIFEST.MF里有这两个属性:
    Main-Class: org.springframework.boot.loader.JarLauncher
    Start-Class: 你的主类全路径(比如com.example.backend.BackendApplication)
    
    同时在Artifact配置里指定Manifest文件路径为src/main/resources/META-INF/MANIFEST.MF。

四、检查Gradle配置是否冲突

如果你之前手动给Jar任务加了Main-Class配置,建议删掉——Spring Boot插件会自动处理Manifest,手动配置反而会冲突。正确的Gradle插件配置应该是这样:

plugins {
    id 'org.springframework.boot' version '3.2.0' // 换成你的Spring Boot版本
    id 'io.spring.dependency-management' version '1.1.4'
    id 'java'
}

// 不需要手动配置jar任务的manifest,Spring Boot插件会自动生成

总结:优先用bootJar任务打包,这是Spring Boot官方指定的方式,完全避免Manifest配置错误的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:35:22