سؤال

وإذا كان لدي فئة org.foobar.MyClass وتريد وضعه في ملف JAR، لا بد لي من وضعه في JAR ل/ المنظمة / foobar / الدليل، أو يمكن وضعه في / بن / المنظمة / foobar / وتحديد حد ما / بن / كما CLASSPATH داخل JAR نفسها؟

هل كانت مفيدة؟

المحلول

والطريقة المعتادة أن الجميع يفعل ذلك - حتى الآن أنا لم أر قط JAR تفعل شيئا مختلفا - هو وضع الطبقة org.foobar.MyClass في ملف JAR في JAR ل/ المنظمة / foobar / الدليل. لا أستطيع أن أتخيل سبب وجيه لفعل شيء مختلف، لأن من شأنه أن يعيق الاستخدام العادي من هذا JAR من قبل أي شخص لا تفعل أشياء غير عادية.

نصائح أخرى

ويمكنك تضمين خاصية الدرجة الاولى مسار في المانيفستو الخاص بك، يعدد جرة ملفات التطبيق الخاص بك يعتمد على. وسيتم النظر في مسارات نسبة إلى موقع JAR القابل للتنفيذ.

وعلى سبيل المثال إذا app.jar يحتوي هذا في MANIFEST.MF:

ومن الدرجة الاولى مسار: lib1.jar، ليب / lib2.jar

وبعد ذلك سوف JVM تتوقع أن تجد lib1.jar في نفس دير كما app.jar ودليل فرعي يسمى ليب تحتوي على lib2.jar.

وأعتقد أنك يمكن تحقيق ذلك باستخدام ملف البيان. إذا كنت أتذكر بشكل صحيح، يمكنك تحديد موقع ملف معين داخل الجرة.

والاسم في ملف جرة أن تطابق اسم الفئة. ما لم يكن بالطبع كنت أكتب محمل فئة مخصصة للقيام أشياء غريبة.

ويمكنك تحديد "الدليل" ضمن ملف جرة باستخدام URL جرة. ومع ذلك، لا أعتقد URLClassLoader يعالج هذا بشكل صحيح (لم يحاكم).

وهناك ميزة أن لا وجود لها وفقا لمعايير لإضافة الملفات جرة الأخرى على إلى classpath من خلال تحديدها في البيان.

وماذا كنت ستفعل هذا الأخير؟ انه من الاسهل لمجرد وضعها في الدليل الصحيح استنادا إلى اسم الحزمة، التي تتجنب الحاجة إلى تحرير ملف البيان أو القيام بأي نوع آخر من إعدادات خاصة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top