1、问题描述
在Linux服务器
上本想运行一下自己写的一个JAR,但是报错了!
no main manifest attribute, in first-real-server-1.0-SNAPSHOT.jar
2、解决办法
在自己的Spring项目的启动类(xxx.xxx.xxx.XXXXApplication)所在的Module中的pom.xml中加上:
<build><!--最终生成可执行jar的名称--><finalName>first-real-server</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>1.4.5.RELEASE</version><executions><execution><phase>package</phase><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
然后再通过Maven重新构建可执行的 jar , 即可解决问题!
3、浅浅解释下为什么
简单翻译下错误信息:缺少主类
直接原因: MANIFEST.MF 中没有 Main-Class 属性
MANIFEST.MF
是什么:Spring Boot 可执行 JAR 包的核心配置文件
一、先看下报错的 jar
首先解压下这个jar
jar xvf first-real-server-1.0-SNAPSHOT. jar
解压后
cat MANIFEST.MF
看到只有三行,并没有 Main-Class
属性
二、再看下重新打包后的jar
xxxxxxx@LDMacBook-Pro META-INF % cat MANIFEST.MF
Manifest-Version: 1.0
Start-Class: org.jing.dong.Application
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Build-Jdk-Spec: 1.8
Spring-Boot-Version: 1.4.5.RELEASE
Created-By: Maven JAR Plugin 3.3.0
Main-Class: org.springframework.boot.loader.JarLauncher
解释下各个属性的含义: