• 解决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中没有主清单属性
    
    • 1
    • 2

    原因分析

    这个错误通常是由于生成的JAR文件缺少一个主清单属性引起的。在使用java -jar命令运行JAR文件时,JVM需要查找JAR文件中包含Main-Class属性的清单文件。如果没有找到这个属性,就会出现该错误。

    验证分析

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

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

    Main-Class:cn.ybzy.demo.mainDemo
    
    • 1

    解决方案

    添加Main-Class

    手动创建一个包含Main-Class清单属性的MANIFEST.MF文件,然后将其添加到JAR文件中

    打开Jar包,在MANIFEST.MF文件中,添加Main-Class主类

    Main-Class:cn.ybzy.demo.mainDemo
    
    • 1

    使用插件

    1.使用maven-jar-plugin插件

    在pom.xml文件中使用maven-jar-plugin插件,并在其中指定了属性。

    <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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    提升技术的13个建议
    C语言之回调函数(非常重要)附带回调函数版本实现整型的加减乘除四则运算
    C++知识精讲14 | 算法篇之二分查找算法
    第三届国际品质节,群硕企业与OI产品共同获奖
    MySQL数据库如何线上修改表结构
    无代码开发成员入门教程
    k8s--基础--12.5--pod--名称空间,标签,节点名称
    为什么删除Windows 11上的Bloatware可以帮助加快你的电脑速度
    前端入门学习笔记四十六
    amazon dot 4 连接WiFi、查看天气
  • 原文地址:https://blog.csdn.net/qq_38628046/article/details/131117598