Решите проблему, когда IntelliJ IDEA выполняет упаковку maven и выполняет команду java -jar, чтобы узнать, что в jar-файле нет основного атрибута манифеста.

проблемный сценарий

IDEA выполняет mvn clean package -DskipTest=trueкоманду или использует инструменты для Maven菜单выполнения операций упаковки, а затем java -jar app.jarпосле выполнения команды выдает сообщение о том, что в банке нет основного атрибута манифеста.


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

Анализ причин

Эта ошибка обычно возникает из-за того, что в сгенерированном файле JAR отсутствует основной атрибут манифеста. При запуске файла JAR с помощью команды JVM необходимо искать файл манифеста java -jar, содержащий свойства в файле JAR . Main-ClassЕсли это свойство не найдено, возникнет эта ошибка.

Анализ подтверждения

Откройте пакет Jar и просмотрите каталог jar, в котором он был создан. Вы увидите, что там есть файл MANIFEST.MF. Этот файл представляет собой каталог манифеста, который нужно искать при запуске jar.Основные данные манифеста — это основной класс, который нужно запустить, то есть класс, в котором находится основная запись функции.

Вставьте сюда описание изображения
Обычно в файле манифеста будет один:

Main-Class:cn.ybzy.demo.mainDemo

решение

AddMain-Класс

Вручную создайте файл, содержащий 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>

рекомендация

отblog.csdn.net/qq_38628046/article/details/131117598
рекомендация