Važnost glavnog manifestnog atributa u samoizvršenom JAR-u

1. Pregled

Svaka izvršna Java klasa mora sadržavati glavni metoda. Jednostavno rečeno, ova metoda je polazna točka aplikacije.

Da bismo pokrenuli našu glavnu metodu iz samoizvršne JAR datoteke, moramo stvoriti odgovarajuću datoteku manifesta i spakirati je zajedno s našim kodom. Ova datoteka manifesta mora imati glavni atribut manifesta koji definira put do klase koja sadrži našu glavnu metodu.

U ovom uputstvu pokazat ćemo kako spakujte jednostavnu Java klasu kao samoizvršavajući se JAR i pokažite važnost glavnog atributa manifesta za uspješno izvršenje.

2. Izvršenje JAR-a bez glavnog atributa manifesta

Da bismo bili praktičniji, prikazat ćemo primjer neuspješnog izvršavanja bez odgovarajućeg atributa manifesta.

Napišimo jednostavnu Java klasu s glavnom metodom:

javna klasa AppExample {public static void main (String [] args) {System.out.println ("AppExample izvršen!"); }} 

Da bismo našu primjersku klasu spakirali u JAR arhivu, moramo prijeći u ljusku našeg operativnog sustava i kompajlirati je:

javac -d. AppExample.java 

Tada ga možemo spakirati u JAR:

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

Naše primjer.jar sadržavat će zadanu datoteku manifesta. Sada možemo pokušati izvršiti JAR:

java -jar primjer.jar 

Izvršenje neće uspjeti s pogreškom:

nema glavnog atributa manifesta, na primjer.jar 

3. Izvršenje JAR-a s glavnim atributom manifesta

Kao što smo vidjeli, JVM nije mogao pronaći naš glavni atribut manifesta. Zbog toga nije mogao pronaći našu glavnu klasu koja sadrži našu glavnu metodu.

Uključimo odgovarajući atribut manifesta u JAR zajedno s našim kodom. Trebat ćemo stvoriti NAJVIŠE.MF datoteka koja sadrži jedan redak:

Glavna klasa: com.baeldung.manifest.AppExample 

Naš manifest sada sadrži put do našeg kompiliranog AppExample.class.

Budući da smo već sastavili našu klasu primjera, nema potrebe da to ponovno radimo.

Samo ćemo ga spakirati zajedno s našom datotekom manifesta:

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

Ovaj put JAR izvršava prema očekivanjima i daje:

Izvršen AppExample!

4. Zaključak

U ovom brzom članku pokazali smo kako spakirati jednostavnu Java klasu kao samoizvršavajući se JAR i na dva jednostavna primjera pokazali smo važnost glavnog manifestnog atributa.

Kompletni izvorni kod za primjer dostupan je na GitHubu. Ovo je projekt zasnovan na Mavenu, pa se može uvesti i koristiti takav kakav jest.