Viktigheten av hovedmanifestattributtet i en selvutførende JAR
1. Oversikt
Hver kjørbar Java-klasse må inneholde en hoved- metode. Enkelt sagt, denne metoden er et utgangspunkt for en applikasjon.
For å kjøre vår hovedmetode fra en selvutførende JAR-fil, må vi lage en riktig manifestfil og pakke den sammen med koden vår. Denne manifestfilen må ha et hovedmanifestattributt som definerer banen til klassen som inneholder vår hovedmetode.
I denne veiledningen viser vi hvordan du gjør det pakke en enkel Java-klasse som en selvutførende JAR og demonstrere viktigheten av et hovedmanifestattributt for en vellykket henrettelse.
2. Utføre en JAR uten hovedmanifestattributtet
For å bli mer praktisk, viser vi et eksempel på mislykket utførelse uten riktig manifestattributt.
La oss skrive en enkel Java-klasse med en hovedmetode:
offentlig klasse AppExample {public static void main (String [] args) {System.out.println ("AppExample utført!"); }}
For å pakke eksempelklassen vår til et JAR-arkiv, må vi gå til skallet på operativsystemet vårt og kompilere det:
javac -d. AppExample.java
Så kan vi pakke den i en JAR:
jar cvf eksempel.jar com / baeldung / manifest / AppExample.class
Våre eksempel.jar vil inneholde en standard manifestfil. Vi kan nå prøve å utføre JAR:
java -jar eksempel.jar
Utførelsen mislykkes med en feil:
ingen hoved manifestattributt, i eksempel.jar
3. Utføre en JAR med hovedmanifestattributtet
Som vi har sett, kunne JVM ikke finne vårt viktigste manifestattributt. På grunn av det kunne den ikke finne hovedklassen vår som inneholder hovedmetoden.
La oss ta med en skikkelig manifestattributt i JAR sammen med koden vår. Vi må lage en MANIFEST.MF fil som inneholder en enkelt linje:
Hovedklasse: com.baeldung.manifest.AppExample
Vår manifest inneholder nå klassestien til vår utarbeidede AppExample.class.
Siden vi allerede har samlet eksemplet vårt, er det ikke nødvendig å gjøre det igjen.
Vi pakker den bare sammen med manifestfilen vår:
jar cvmf MANIFEST.MF eksempel.jar com / baeldung / manifest / AppExample.class
Denne gangen kjører JAR som forventet og gir ut:
AppExample utført!
4. Konklusjon
I denne raske artikkelen viste vi hvordan vi pakker en enkel Java-klasse som en selvutførende JAR, og vi demonstrerte viktigheten av et hovedmanifestattributt på to enkle eksempler.
Den komplette kildekoden for eksemplet er tilgjengelig på GitHub. Dette er et Maven-basert prosjekt, så det kan importeres og brukes som det er.