SpringBoot项目打包Jar后运行提示Could not find or load main class
首先纠正一个明显的命令错误:你执行的java -jar nameofjar.java后缀写错了,正确命令应为java -jar nameofjar.jar,先确认是否是这个低级问题导致的报错。
如果后缀无误,按以下步骤逐一排查:
核对Jar内主类的实际路径
解压Jar后,确认com/owl/PosApi/OwlPosApiApplication.class文件是否存在,路径需完全匹配Manifest中com.owl.PosApi.OwlPosApiApplication的大小写(Java对包名、类名大小写敏感,注意PosApi等名称的大小写是否和实际目录一致)。确认SpringBoot打包插件配置
SpringBoot项目必须通过Spring Boot Maven/Gradle插件打包才能生成可执行Jar,普通Jar打包方式无法正确包含依赖和启动逻辑。若使用Maven,检查pom.xml是否包含以下配置:<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>执行
mvn clean package后,target目录会生成两个Jar:一个普通Jar,一个带-spring-boot.jar后缀的可执行Jar,需运行的是后者。检查JDK版本兼容性
确保运行Jar的JDK版本与IDEA中编译项目的JDK版本一致,比如项目用JDK17编译却用JDK8运行,会触发类加载异常。执行java -version和javac -version确认版本匹配。验证Manifest文件格式
Manifest.mf有严格格式要求:最后一行必须是空行,键值对后不能有多余空格。你的Manifest内容格式看似没问题,但不要手动修改,让Spring Boot插件自动生成更可靠。确认Jar包完整性
重新执行mvn clean package,确保打包过程无报错。SpringBoot可执行Jar通常体积在几十MB以上,若生成的Jar只有几MB,说明依赖未被正确打包,需检查插件配置或依赖引入是否正常。
附相关信息:
- 主类路径验证截图:

- 主类及文件结构截图:

- IntelliJ运行配置截图:

- Manifest.mf内容:
Manifest-Version: 1.0 Main-Class: com.owl.PosApi.OwlPosApiApplication
内容的提问来源于stack exchange,提问作者Oirampok

