Contents

Running the jar package on the server reports an error: no main manifest attribute

出现问题

SpringBoot项目经过Maven打包后的jar包在服务器上运行报错:no main manifest attribute

/images/2022-08-08-服务器上运行jar包报错:no-main-manifest-attribute/1

可以看到日志显示没有main文件,查看打包后的jar包也可以看到MANIFEST.MF文件中并无main文件信息

/images/2022-08-08-服务器上运行jar包报错:no-main-manifest-attribute/2

问题原因

在pom中可看到关于SpringBoot的依赖如下:

/images/2022-08-08-服务器上运行jar包报错:no-main-manifest-attribute/3

并不是和我们常用的SpringBoot项目一样会引入父pom:

spring-boot-starter-parent

在父pom中可以看到对Maven这个打包插件是有默认配置的:

/images/2022-08-08-服务器上运行jar包报错:no-main-manifest-attribute/4

而项目没有引入父pom,所以找不到main文件。

解决办法

在项目pom文件中添加打包插件,手动指定mainClass的位置即可。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<build>
	<plugins>
    	<plugin>
        	<groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
            	<mainClass>com.dkha.demo.DataServePlatformApplication</mainClass>
            </configuration>
            <version>2.4.1</version>
            <executions>
            	<execution>
                	<goals>
                    	<goal>repackage</goal>
                    </goals>
                </execution>
        	</executions>
    	</plugin>
	</plugins>
</build>

/images/2022-08-08-服务器上运行jar包报错:no-main-manifest-attribute/5

重新执行mvn clean package打包,查看打包后的jar包可以看到MANIFEST.MF文件中已经有了main文件信息:

/images/2022-08-08-服务器上运行jar包报错:no-main-manifest-attribute/6

成功解决 no main manifest attribute 问题。