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
解釋下各個屬性的含義: