0


解决IntelliJ IDEA执行maven打包,执行java -jar命令提示jar中没有主清单属性

问题场景

IDEA执行

mvn clean package -DskipTest=true

命令或者借助工具的

Maven菜单

进行打包操作,然后执行

java -jar app.jar

命令后,提示jar中没有主清单属性


D:\WorkSpace\demo\target>java -jar demo-SNAPSHOT.jar
demo-SNAPSHOT.jar中没有主清单属性

原因分析

这个错误通常是由于生成的JAR文件缺少一个主清单属性引起的。在使用

java -jar

命令运行JAR文件时,JVM需要查找JAR文件中包含

Main-Class

属性的清单文件。如果没有找到这个属性,就会出现该错误。

验证分析

打开Jar包,查看其构建的jar目录,可以看到有一个MANIFEST.MF文件。该文件就是jar运行时要查找的清单目录,其中主清单数据,就是要运行的主类,即main函数入口所在的类

在这里插入图片描述
正常情况下,该清单文件内会有一个:

Main-Class:cn.ybzy.demo.mainDemo

解决方案

添加Main-Class

手动创建一个包含

Main-Class

清单属性的

MANIFEST.MF

文件,然后将其添加到JAR文件中

打开Jar包,在

MANIFEST.MF

文件中,添加Main-Class主类

Main-Class:cn.ybzy.demo.mainDemo

使用插件

1.使用

maven-jar-plugin

插件

在pom.xml文件中使用

maven-jar-plugin

插件,并在其中指定了

<mainClass>

属性。

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version><configuration><archive><manifest><addClasspath>true</addClasspath><mainClass>com.example.MainClass</mainClass></manifest></archive></configuration></plugin></plugins></build>

2.使用

maven-shade-plugin

插件

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.2.4</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>com.example.MainClass</mainClass></transformer></transformers></configuration></execution></executions></plugin></plugins></build>

本文转载自: https://blog.csdn.net/qq_38628046/article/details/131117598
版权归原作者 CodeDevMaster 所有, 如有侵权,请联系我们删除。

“解决IntelliJ IDEA执行maven打包,执行java -jar命令提示jar中没有主清单属性”的评论:

还没有评论