Java >> Java tutorial >  >> Tag >> import

Vigtigheden af ​​den vigtigste manifest egenskab i en selvudførende JAR

1. Oversigt

Hver eksekverbar Java-klasse skal indeholde en main metode. Kort sagt er denne metode et udgangspunkt for en applikation.

For at køre vores hovedmetode fra en selvudførende JAR-fil, skal vi oprette en ordentlig manifestfil og pakke den sammen med vores kode. Denne manifestfil skal have en hovedmanifestattribut, der definerer stien til klassen, der indeholder vores hovedmetode.

I dette selvstudie viser vi, hvordan man pakker en simpel Java-klasse som en selvudførende JAR og viser vigtigheden af ​​en hovedmanifestegenskab for en vellykket eksekvering.

2. Udførelse af en JAR uden hovedmanifestegenskaben

For at blive mere praktisk viser vi et eksempel på mislykket udførelse uden den korrekte manifest-attribut.

Lad os skrive en simpel Java-klasse med en hovedmetode:

public class AppExample {
    public static void main(String[] args){
        System.out.println("AppExample executed!");
    }
}

For at pakke vores eksempelklasse til et JAR-arkiv skal vi gå til shellen på vores operativsystem og kompilere det:

javac -d . AppExample.java

Så kan vi pakke det ind i en JAR:

jar cvf example.jar com/baeldung/manifest/AppExample.class

Vores example.jar vil indeholde en standard manifestfil. Vi kan nu prøve at udføre JAR:

java -jar example.jar

Udførelse mislykkes med en fejl:

no main manifest attribute, in example.jar

3. Udførelse af en JAR med hovedmanifestegenskaben

Som vi har set, kunne JVM ikke finde vores vigtigste manifest egenskab. På grund af det kunne den ikke finde vores hovedklasse, der indeholder vores hovedmetode.

Lad os inkludere en ordentlig manifest-attribut i JAR sammen med vores kode. Vi bliver nødt til at oprette et MANIFEST.MF fil, der indeholder en enkelt linje:

Main-Class: com.baeldung.manifest.AppExample

Vores manifest indeholder nu klassestien til vores kompilerede AppExample.class .
Da vi allerede har kompileret vores eksempelklasse, er det ikke nødvendigt at gøre det igen.

Vi pakker det bare sammen med vores manifestfil:

jar cvmf MANIFEST.MF example.jar com/baeldung/manifest/AppExample.class

Denne gang udfører JAR som forventet og udsender:

AppExample executed!

4. Konklusion

I denne hurtige artikel viste vi, hvordan man pakker en simpel Java-klasse som en selvudførende JAR, og vi demonstrerede vigtigheden af ​​en hovedmanifestegenskab på to simple eksempler.

Den komplette kildekode til eksemplet er tilgængelig på GitHub. Dette er et Maven-baseret projekt, så det kan importeres og bruges som det er.


Java tag