הפעל יישום Java משורת הפקודה

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

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

אנו נתמקד בתרחיש היישומים העצמאי במאמר זה. להלן נתייחס אליו כאל יישום JAR.

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

2. צור א קַנקַן יישום

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

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

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

$ javac com / baeldung / jarArguments / *. java $ jar cfm JarExample.jar ../resources/example_manifest.txt com / baeldung / jarArguments / *. class

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

כך נוכל ליצור JAR שאינו ניתן להפעלה ללא קובץ מניפסט:

$ jar cf JarExample2.jar com / baeldung / jarArguments / *. class

3. ארגומנטים של שורת הפקודה של Java

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

זה מאפשר למשתמש לעשות זאת ציין פרטי תצורה בעת הפעלת היישום.

כתוצאה מכך, היישום יכול להימנע מערכים עם קידוד קשה, והוא עדיין יכול לטפל במקרי שימוש רבים ושונים.

טיעון יכול להכיל כל תו אלפא-נומרי, תווי יוניקוד ואולי כמה תווים מיוחדים המותרים על ידי הקליפה, למשל '@'.

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

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

עם זאת, זה לא תמיד המקרה של יישומי JAR.

כפי שכבר דנו, נקודת הכניסה של מחלקה ראשית בג'אווה היא השיטה העיקרית. ה הוויכוחים הם כולם חוּטס ומועברים לשיטה העיקרית כ- חוּט מַעֲרָך.

עם זאת, בתוך היישום, אנו יכולים להמיר כל אלמנט של ה- חוּט מערך לסוגי נתונים אחרים, כגון לְהַשְׁחִיר, int, לְהַכפִּיל, שֶׁלָהֶם שיעורי עטיפה, או סוגים מתאימים אחרים.

4. הפעל הפעלה קַנקַן עם ויכוחים

בואו נראה את התחביר הבסיסי להפעלת קובץ JAR להפעלה עם ארגומנטים:

java -jar jar-file-name [args…]

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

$ java -jar JarExample.jar "arg 1" [מוגן בדוא"ל] 

נראה את הפלט הבא במסוף:

שלום קורא באלדונג ב- JarExample! יש 2 ויכוחים! טיעון (1): arg 1 טיעון (2): [מוגן בדוא"ל] 

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

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

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

5. הפעל תוכנה שאינה ניתנת לביצוע קַנקַן עם ויכוחים

כדי להריץ יישום בקובץ JAR שאינו ניתן להפעלה, עלינו להשתמש -cp אפשרות במקום -קַנקַן. נשתמש ב- -cp אפשרות (קיצור של classpath) לציין את קובץ ה- JAR שמכיל את קובץ הכיתה שאנו רוצים לבצע:

java -cp jar-file-name main-class-name [args…]

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

ה- JAR שאינו ניתן להפעלה שנוצר קודם מכיל את אותו יישום פשוט. אנחנו יכולים להריץ את זה עם כל הטיעונים (כולל אפס). הנה דוגמה עם שני טיעונים:

$ java -cp JarExample2.jar com.baeldung.jarArguments.Jar דוגמה "arg 1" [מוגן בדוא"ל]

וכמו שראינו לעיל, נראה את הפלט הבא:

שלום קורא באלדונג ב- JarExample! יש 2 ויכוחים! טיעון (1): arg 1 טיעון (2): [מוגן בדוא"ל]

6. מסקנה

במדריך זה למדנו שתי דרכים להפעלת יישום JAR בשורת הפקודה עם או בלי ויכוחים.

הדגמנו גם כי ויכוח יכול להכיל רווחים ותווים מיוחדים (כאשר המעטפת מאפשרת זאת).

כמו תמיד, הקוד לדוגמאות זמין ב- GitHub.