• 解决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
  • 相关阅读:
    搭载AI之后的表格插件又有哪些新的改变
    如何在一张图片上做涂鸦/涂抹,并支持导出相关轨迹图(内含在线演示地址)
    Ubuntu-Ports更新源 ARM64更新源
    设计模式-责任链设计模式
    优雅地翻转数组
    使用stream下载文件避坑-》堆内存溢出的原因
    Aspose.CAD for .NET 22.11.0 cRACK
    axios的delete操作你踩过坑吗?
    算法设计与分析 SCAU17089 最大m子段和
    计算机网络-传输层(TCP协议特点和TCP报文段格式,TCP连接管理)
  • 原文地址:https://blog.csdn.net/qq_38628046/article/details/131117598