החשיבות של מאפיין המניפסט הראשי ב- JAR שמבצע עצמו

1. סקירה כללית

כל מחלקת Java הפעלה חייבת להכיל רָאשִׁי שיטה. במילים פשוטות, שיטה זו היא נקודת התחלה של יישום.

כדי להריץ את השיטה העיקרית שלנו מקובץ JAR שמבצעת עצמית, עלינו ליצור קובץ מניפסט מתאים ולארוז אותו יחד עם הקוד שלנו. לקובץ המניפסט הזה צריכה להיות תכונה של מניפסט ראשי המגדיר את הנתיב למחלקה המכילה את השיטה העיקרית שלנו.

במדריך זה נראה כיצד לארוז כיתת Java פשוטה כ- JAR שמבצע ביצוע עצמי ולהדגים את החשיבות של מאפיין manifest הראשי לביצוע מוצלח.

2. ביצוע JAR ללא התכונה המניפסט העיקרי

כדי להיות מעשיים יותר, נראה דוגמה לביצוע לא מוצלח ללא תכונת המניפסט המתאימה.

בואו נכתוב שיעור Java פשוט עם שיטה עיקרית:

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

כדי לארוז את מחלקת הדוגמה שלנו לארכיון JAR, עלינו ללכת לקליפה של מערכת ההפעלה שלנו ולהרכיב אותה:

javac -d. AppExample.java 

אז נוכל לארוז אותו ב- JAR:

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

שֶׁלָנוּ example.jar יכיל קובץ מניפסט ברירת מחדל. כעת אנו יכולים לנסות לבצע את ה- JAR:

java -jar example.jar 

הביצוע ייכשל עם שגיאה:

אין תכונת מניפסט עיקרית, למשל.ג'אר 

3. ביצוע JAR עם התכונה המניפסט העיקרי

כפי שראינו, JVM לא הצליחה למצוא את תכונת המניפסט העיקרית שלנו. מסיבה זו, היא לא הצליחה למצוא את המעמד הראשי שלנו המכיל את השיטה העיקרית שלנו.

בואו נכלול תכונה מניפסט מתאימה ל- JAR יחד עם הקוד שלנו. נצטרך ליצור MANIFEST.MF קובץ המכיל שורה אחת:

מחלקה ראשית: com.baeldung.manifest.AppExample 

המניפסט שלנו מכיל כעת את מסלול הכיתה שלנו AppExample.class.

מכיוון שכבר ערכנו את שיעור הדוגמאות שלנו, אין צורך לעשות זאת שוב.

פשוט נארוז אותו יחד עם קובץ המניפסט שלנו:

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

הפעם JAR מבצע כצפוי ופלט:

AppExample בוצע!

4. מסקנה

במאמר מהיר זה, הראינו כיצד לארוז מחלקת Java פשוטה כ- JAR שמבצע ביצוע עצמי, והראינו את החשיבות של מאפיין הראשי של המניפסט בשתי דוגמאות פשוטות.

קוד המקור השלם לדוגמא זמין ב- GitHub. זהו פרויקט מבוסס Maven, כך שניתן לייבא אותו ולהשתמש בו כמות שהוא.


$config[zx-auto] not found$config[zx-overlay] not found