Lösen Sie das Problem, wenn IntelliJ IDEA die Maven-Verpackung ausführt und den Befehl java -jar ausführt, um anzuzeigen, dass das JAR kein Hauptmanifestattribut enthält.

Problemszenario

IDEA führt mvn clean package -DskipTest=trueden Befehl aus oder verwendet Tools, um Maven菜单Verpackungsvorgänge durchzuführen. java -jar app.jarNach der Ausführung des Befehls wird dann angezeigt, dass im JAR kein Hauptmanifestattribut vorhanden ist.


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

Ursachenanalyse

Dieser Fehler wird normalerweise dadurch verursacht, dass in der generierten JAR-Datei ein Hauptmanifestattribut fehlt. Wenn Sie eine JAR-Datei mit einem Befehl ausführen , muss die JVM nach einer Manifestdatei suchen java -jar, die Eigenschaften in der JAR-Datei enthält . Main-ClassWenn diese Eigenschaft nicht gefunden wird, tritt dieser Fehler auf.

Bestätigungsanalyse

Öffnen Sie das Jar-Paket und sehen Sie sich das Jar-Verzeichnis an, in dem es erstellt wurde. Sie können sehen, dass es eine MANIFEST.MF-Datei gibt. Diese Datei ist das Manifestverzeichnis, nach dem gesucht werden soll, wenn das JAR ausgeführt wird. Die Hauptmanifestdaten sind die auszuführende Hauptklasse, dh die Klasse, in der sich der Hauptfunktionseintrag befindet.

Fügen Sie hier eine Bildbeschreibung ein
Normalerweise gibt es eine in der Manifestdatei:

Main-Class:cn.ybzy.demo.mainDemo

Lösung

AddMain-Klasse

Erstellen Sie manuell eine Datei mit Main-ClassManifesteigenschaften MANIFEST.MFund fügen Sie sie der JAR-Datei hinzu

Öffnen Sie das Jar-Paket und MANIFEST.MFfügen Sie Main-Class zur Datei hinzu.

Main-Class:cn.ybzy.demo.mainDemo

Verwenden Sie Plugins

1. Verwenden Sie maven-jar-pluginPlugins

Das Plugin wird in der Datei pom.xml verwendet maven-jar-pluginund <mainClass>die Eigenschaften werden darin angegeben.

<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. Verwenden Sie maven-shade-pluginPlugins

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

Ich denke du magst

Origin blog.csdn.net/qq_38628046/article/details/131117598
Empfohlen
Rangfolge