Resuelva el problema cuando IntelliJ IDEA ejecuta el empaquetado maven y ejecuta el comando java -jar para indicar que no hay ningún atributo de manifiesto principal en el jar.

escenario problemático

IDEA ejecuta mvn clean package -DskipTest=trueel comando o usa herramientas para Maven菜单realizar operaciones de empaquetado y luego, java -jar app.jardespués de ejecutar el comando, indica que no hay ningún atributo de manifiesto principal en el jar.


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

Análisis de causa

Este error suele deberse a que al archivo JAR generado le falta un atributo de manifiesto principal. Al ejecutar un archivo JAR mediante un comando, la JVM debe buscar un archivo de manifiesto java -jarque contenga propiedades en el archivo JAR . Main-ClassSi no se encuentra esta propiedad, se producirá este error.

Análisis de confirmación

Abra el paquete Jar y vea el directorio jar en el que se creó, puede ver que hay un archivo MANIFEST.MF. Este archivo es el directorio de manifiesto que se buscará cuando se ejecute el jar. Los datos del manifiesto principal son la clase principal que se ejecutará, es decir, la clase donde se encuentra la entrada de la función principal.

Insertar descripción de la imagen aquí
Normalmente, habrá uno en el archivo de manifiesto:

Main-Class:cn.ybzy.demo.mainDemo

solución

Agregar clase principal

Cree manualmente un archivo que contenga Main-Classpropiedades de manifiesto MANIFEST.MFy agréguelo al archivo JAR

Abra el paquete Jar y MANIFEST.MFagregue Main-Class al archivo.

Main-Class:cn.ybzy.demo.mainDemo

Usar complementos

1. Utilice maven-jar-plugincomplementos

El complemento se utiliza en el archivo pom.xml maven-jar-pluginy <mainClass>las propiedades se especifican en él.

<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. Utilice maven-shade-plugincomplementos

  <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>

Supongo que te gusta

Origin blog.csdn.net/qq_38628046/article/details/131117598
Recomendado
Clasificación