تنفيذ حزمة جرة
يمكن تعبئة حزمة JAR باستخدام توجيه JAR. يمكن لدخول جرة في سطر الأوامر عرض محتوى توجيه الجرة
من الأمثلة المعروضة في العرض الأخير ، هناك طريقتان للتجميع. الفرق بين الاثنين هو ما إذا كنت تريد استخدام ملف البيان البيان الذي حددته. لا يتم تعبئة المثال الأول باستخدام ملف البيان ، وبالتالي فإن ملف البيان في حزمة JAR النهائية التي تم إنشاؤها هو الملف الافتراضي. هذه الطريقة مناسبة لهيكل حزمة جرة بسيطة نسبيًا ، لا يوجد أي تبعية حزمة جرة أخرى ولا تحتاج حزمة الجرة التي تم إنشاؤها إلى تنفيذها. لا يمكن تنفيذ حزمة JAR التي تم إنشاؤها بهذه الطريقة باستخدام أمر java -jar XXX.jar لأن إدخال البرنامج غير محدد في ملف البيان. المثيل الثاني هو طريقة التغليف الشائعة نسبيًا ، أي استخدام ملف واضح مخصص للمشاركة في العبوة ، بحيث يمكنك إضافة تبعيات إلى الحزمة ، وتحديد إدخال البرنامج لتنفيذ java -jar XXX.jar لتشغيل حزمة الجرة مباشرة.
أول طريقة تغليف بسيطة
أسهل شيء هو حزم وإخراج ملف Bytecode الفئة المترجمة في المجلد الحالي. الأمثلة على النحو التالي:
اكتب ثلاثة ملفات java ، test1.java test2.java و main.java
الفئة العامة test1 {public static void main (string [] args) {} public void display () {system.out.println ("This is class test1") ؛ }}و test2.java ملف
الفئة العامة test2 {public static void main (string [] args) {} public void display () {system.out.println ("This is class test2") ؛ }}main.java
الفئة العامة الرئيسية {public static void main (string [] args) {for (string a: args) {system.out.println ("gived parameter"+a) ؛ } test1 t1 = new test1 () ؛ t1.display () ؛ Test2 T2 = New Test2 () ؛ t2.display () ؛ }} قم بتجميع هذه الملفات الثلاثة على سطر الأوامر واستخدم الأمر Javac للتجميع.
استخدم توجيه JAR لتعبئة ملف الفئة المترجمة
يتم عرض القائمة المضافة أثناء التغليف. استخدم أداة إزالة الضغط لفتح حزمة test.jar التي تم إنشاؤها ويمكنك رؤية الهيكل التالي:
بالإضافة إلى ملفات الفصول الثلاثة التي تم تجميعها ، يوجد مجلد إضافي إضافي ، يحتوي على mansest.mf (ملف قائمة). دور هذا الملف مهم للغاية ، كما هو موضح لاحقًا. دعونا نلقي نظرة على المحتويات في ذلك أولاً
بيان بسيط للغاية ، يحتوي فقط على إصدار واضح وإصدار Java.
تنفيذ java -jar test.jar في هذا الوقت له التأثير التالي:
لا يوجد خطأ في السمة القائمة الرئيسية المبلغ عنها. هذا لأننا نستخدم الطريقة الأولى لإنشاء الجرة باستخدام البيان الافتراضي. لا يحدد البيان الافتراضي إدخال البرنامج ، لذلك يحدث خطأ.
يمكنك تغيير ملف البيان مباشرة في حزمة JAR (افتح أداة إزالة الضغط وحفظه بعد تغييره) ، وتغييره إلى التأثير التالي:
بعد تنفيذ java -jar test.jar مرة أخرى ، يدخل البرنامج المحتوى الصحيح:
تتم إضافة السمة من الفئة الرئيسية إلى ملف البيان ويحدد إدخال البرنامج ، والذي يدرك التنفيذ المباشر لملف الجرة.
لذلك ، لا يمكن استخدام البيان الافتراضي تنفيذ ملف JAR مباشرة. إما استخدام ملف البيان الذي تحدده لتعبئته أو تغيير ملف البيان في الحزمة.
الطريقة الثانية لحزم
طريقة التغليف الثانية أكثر عمومية. بشكل عام ، السطر الأول من ملف Java هو package XXX; أي اسم الحزمة ، ويحدد أيضًا مسار ملف الفئة المترجم. عندما يكون هناك العديد من ملفات Java التي يتم تجميعها وتعبئتها ولديها أسماء حزم مختلفة ، فمن غير الواقعي جدًا كتابة ملف واحد في وقت يتم فيه تعبئته وفقًا للطريقة الأولى ، لذلك هناك طريقة ثانية. ضع جميع الدلائل الموجودة في ملفات الفصل المراد تعبئتها وحزم جرة التبعية في مجلد الجذر (مثل FOO) ، ثم اكتب ملفًا واضحًا لتحديد مدخل البرنامج وحزم جرة التبعية الأخرى. في تنفيذ الأمر:
لاحظ أن هناك مساحة ونقطة خلف foo/ Folder في الأمر أعلاه
لنرى مثالًا أدناه
الشيء نفسه هو test1.java ، test2.java و main.java ، ولكن لكل منها أسماء الحزم الخاصة به.
Package Cn.MyTest1 ؛ Test Test1 {public static void main (string [] args) {} public void display () {system.out.println ("This is is class test1") ؛ }} Package Cn.Mytest2 ؛ Test Test2 {public static void main (string [] args) {} public void display () {system.out.println ("This is class test2") ؛ }} Package cn.mymain ؛ import cn.mytest1.test1 ؛ import cn.mytest2.test2 ؛ public class main {public static void main (string [] args) {for (string ite: args) {system.out.println ("parameter"+item) ؛ } test1 t1 = new test1 () ؛ Test2 T2 = New Test2 () ؛ t1.display () ؛ t2.display () ؛ }} تم تجميعها أيضًا باستخدام توجيه Javac ، وتواجد ملفات الفئة الثلاثة في مسارات مختلفة لأن أسماء الحزم الخاصة بهم مختلفة. ضع جميع المجلدات المترجمة التي تحتوي على ملفات فئة في مجلد FOO:
ثم اكتب ملفًا واضحًا خارج فو:
محتوى البيان كما يلي:
ملاحظة : السطر الأخير من ملف البيان هو سطر فارغ.
قم بتنفيذ الأمر من سطر الأوامر: jar cvfm test.jar MANIFEST.MF -C foo/ .
اختبر ما إذا كان يمكن تشغيل حزمة JAR مباشرة على سطر الأوامر ، استخدم الأمر java -jar test.jar
حزمة بشكل صحيح وقم بتشغيل الجرة بنجاح.
مقدمة ملف واضح
من خلال مثالين أعلاه ، يمكننا أن نرى أن ملف البيان ضروري لتعبئة JAR. يصف ملف البيان المعلومات التفصيلية لملف الجرة المعبأة ويوجد في مجلد META-Inf المعبأ. المحتوى الرئيسي لملف البيان البسيط هو كما يلي:
والشيء الرئيسي هو أن الصفات الثلاث للمسار الفئة الرئيسي للطبقة الرئيسية من الفئة الرئيسية مهمة للغاية عند صنع حزم جرة. Version-Version هو رقم الإصدار ، فقط اكتبه وفقًا لذلك. الفئة الرئيسية هي برنامج الإدخال لحزمة JAR ، والتي تحدد الاسم الكامل لفئة التشغيل (يجب تضمين اسم الحزمة). وبهذه الطريقة ، يمكنك استخدام java -jar name.jar لتشغيل حزمة الجرة مباشرة. يشير المسار من الدرجة الثالثة إلى حزم جرة أخرى تحتاج إلى الاعتماد عليها عند العبوة. عند العبوة ، قد يحتوي البرنامج أيضًا على حزم جرة أخرى ، لذلك تحتاج إلى إضافة تبعيات.
لاحظ أن هناك مساحة بين القولون ومحتوى كل سمة من سمات البيان ، ويجب أن يكون هناك سطر فارغ في النهاية بعد الكتابة ، وإلا فإن هناك خطأ في وقت التشغيل لا يمكن العثور على سمة القائمة الرئيسية.
ملخص
من السهل ارتكاب أخطاء في ملفات التعبئة والتغليف هو كتابة الملفات الظاهرة الواضحة ، والتي تكون عرضة لتنسيق أخطاء مثل عدد قليل من المساحات بين القولون من السمة والمحتوى ، لا توجد مساحات بين إضافة التبعيات في مسار الفصل ، والكثير من التبعيات عند عدم وجود مساحات في كل سطر عند عدم وجود خطوط متعددة في نهاية المطاف في نهاية الملف.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.