Betydningen af hovedmanifestattribut i en selvudførende JAR
1. Oversigt
Hver eksekverbar Java-klasse skal indeholde en vigtigste metode. Kort sagt, denne metode er 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 attribut til hovedmanifest, der definerer stien til klassen, der indeholder vores hovedmetode.
I denne vejledning viser vi, hvordan du gør det pakke en simpel Java-klasse som en selvudførende JAR og demonstrere vigtigheden af en hovedmanifestattribut for en vellykket henrettelse.
2. Udførelse af en JAR uden hovedmanifestattributten
For at blive mere praktisk viser vi et eksempel på mislykket udførelse uden den korrekte manifestattribut.
Lad os skrive en simpel Java-klasse med en hovedmetode:
offentlig klasse AppExample {public static void main (String [] args) {System.out.println ("AppExample eksekveret!"); }}
For at pakke vores eksempelklasse til et JAR-arkiv skal vi gå til skallen på vores operativsystem og kompilere det:
javac -d. AppExample.java
Så kan vi pakke det i en JAR:
jar cvf eksempel.jar com / baeldung / manifest / AppExample.class
Vores eksempel.jar indeholder en standardmanifestfil. Vi kan nu prøve at udføre JAR:
java -jar eksempel.jar
Udførelsen mislykkes med en fejl:
ingen hovedmanifestattribut, i eksempel.jar
3. Udførelse af en JAR med hovedmanifestattributten
Som vi har set, kunne JVM ikke finde vores vigtigste manifestattribut. På grund af det kunne den ikke finde vores hovedklasse indeholdende vores hovedmetode.
Lad os medtage en ordentlig manifestattribut i JAR sammen med vores kode. Vi bliver nødt til at oprette en MANIFEST.MF fil, der indeholder en enkelt linje:
Hovedklasse: com.baeldung.manifest.AppExample
Vores manifest indeholder nu klassestien til vores udarbejdede AppExample.class.
Da vi allerede har samlet vores eksempelklasse, er der ingen grund til at gøre det igen.
Vi pakker det bare sammen med vores manifestfil:
jar cvmf MANIFEST.MF eksempel.jar com / baeldung / manifest / AppExample.class
Denne gang udfører JAR som forventet og output:
AppExample udført!
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 hovedmanifestattribut i to enkle 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.