1、问题描述
在Linux服务器
上本想运行一下自己写的一个JAR,但是报错了!
no main manifest attribute, in first-real-server-1.0-SNAPSHOT.jar
2、解决办法
在自己的Spring项目的启动类(xxx.xxx.xxx.XXXXApplication)所在的Module中的pom.xml中加上:
powershell
<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
xml
jar xvf first-real-server-1.0-SNAPSHOT. jar
解压后
cat MANIFEST.MF
看到只有三行,并没有 Main-Class
属性
二、再看下重新打包后的jar
xml
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
解释下各个属性的含义: