Belang van het belangrijkste manifeste kenmerk in een zelfuitvoerende JAR

1. Overzicht

Elke uitvoerbare Java-klasse moet een hoofd methode. Simpel gezegd, deze methode is een startpunt van een applicatie.

Om onze hoofdmethode uit te voeren vanuit een zelfuitvoerend JAR-bestand, moeten we een correct manifestbestand maken en dit samen met onze code inpakken. Dit manifestbestand moet een hoofdmanifestattribuut hebben dat het pad definieert naar de klasse die onze hoofdmethode bevat.

In deze zelfstudie laten we zien hoe u dat kunt doen pak een eenvoudige Java-klasse in als een zelfuitvoerende JAR en demonstreer het belang van een hoofdmanifestattribuut voor een succesvolle uitvoering.

2. Een JAR uitvoeren zonder het belangrijkste manifestattribuut

Om praktischer te worden, laten we een voorbeeld zien van een mislukte uitvoering zonder het juiste manifestattribuut.

Laten we een eenvoudige Java-klasse schrijven met een hoofdmethode:

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

Om onze voorbeeldklasse in een JAR-archief te verpakken, moeten we naar de shell van ons besturingssysteem gaan en deze compileren:

javac -d. AppExample.java 

Dan kunnen we het in een JAR verpakken:

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

Onze voorbeeld.jar bevat een standaard manifestbestand. We kunnen nu proberen de JAR uit te voeren:

java -jar voorbeeld.jar 

De uitvoering zal mislukken met een fout:

geen hoofdmanifestattribuut, in example.jar 

3. Een JAR uitvoeren met het belangrijkste manifestattribuut

Zoals we hebben gezien, kon JVM ons belangrijkste manifestattribuut niet vinden. Daarom kon het onze hoofdklasse met onze hoofdmethode niet vinden.

Laten we samen met onze code een correct manifestattribuut in de JAR opnemen. We moeten een MANIFEST.MF bestand met een enkele regel:

Hoofdklasse: com.baeldung.manifest.AppExample 

Ons manifest bevat nu het klassenpad naar ons gecompileerde AppExample.class.

Omdat we onze voorbeeldklasse al hebben samengesteld, hoeft u deze niet nog een keer te doen.

We pakken het gewoon samen met ons manifestbestand in:

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

Deze keer werkt JAR zoals verwacht en voert het uit:

AppExample uitgevoerd!

4. Conclusie

In dit korte artikel hebben we laten zien hoe je een eenvoudige Java-klasse kunt verpakken als een zelfuitvoerende JAR, en we hebben het belang van een hoofdmanifestattribuut gedemonstreerd aan de hand van twee eenvoudige voorbeelden.

De volledige broncode voor het voorbeeld is beschikbaar op GitHub. Dit is een op Maven gebaseerd project, dus het kan worden geïmporteerd en gebruikt zoals het is.