проблемный сценарий
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>