مسار الفئة

Classpath هو مُعامل في آلة جافا الافتراضية أو مُترجم جافا يُحدد موقع الفئات والحزم المُعرّفة من قِبل المستخدم . يُمكن ضبط هذا المُعامل إما عبر سطر الأوامر أو من خلال مُتغير بيئي .

نظرة عامة وهيكلية

على غرار سلوك التحميل الديناميكي التقليدي ، عند تنفيذ برامج جافا ، تقوم آلة جافا الافتراضية بالعثور على الفئات وتحميلها بشكل كسول (أي أنها لا تُحمّل رمز البايت الخاص بالفئة إلا عند استخدامها لأول مرة). ويُحدد مسار الفئات (classpath) لجافا مكان البحث في نظام الملفات عن الملفات التي تُعرّف هذه الفئات.

تقوم الآلة الافتراضية بالبحث عن الفئات وتحميلها بهذا الترتيب:

  1. فئات التمهيد: الفئات الأساسية لمنصة جافا (تتضمن الفئات العامة لمكتبة فئات جافا ، والفئات الخاصة الضرورية لكي تكون هذه المكتبة فعالة).
  2. فئات الامتداد: الحزم الموجودة في دليل الامتداد الخاص ببيئة تشغيل جافا أو JDK ،jre/lib/ext/
  3. الحزم والمكتبات التي يحددها المستخدم

بشكل افتراضي، لا يمكن الوصول إلا إلى حزم واجهة برمجة تطبيقات JDK القياسية وحزم الإضافات دون الحاجة إلى تحديد موقعها. يجب تحديد مسار جميع الحزم والمكتبات المُعرَّفة من قِبل المستخدم في سطر الأوامر (أو في ملف البيان المرتبط بملف Jar الذي يحتوي على الفئات).

تحديد مسار تنفيذ برامج جافا

التزويد كمعامل تطبيق

لنفترض أن لدينا حزمة تسمى org.mypackage تحتوي على الفئات التالية:

  • مرحباً بالعالم (الفئة الرئيسية)
  • فئة الدعم
  • فئة الأدوات

ويتم تخزين الملفات التي تحدد هذه الحزمة فعليًا تحت الدليل D:\myprogram (على نظام التشغيل Windows ) أو /home/user/myprogram (على نظام التشغيل Linux ).

يبدو هيكل الملف كالتالي:

مايكروسوفت ويندوزلينكس
D:\myprogram\ | ---> org\ | ---> mypackage\ | ---> HelloWorld.class ---> SupportClass.class ---> UtilClass.class 
/home/user/myprogram/ | ---> org/ | ---> mypackage/ | ---> HelloWorld.class ---> SupportClass.class ---> UtilClass.class 

عند استدعاء جافا، نحدد اسم التطبيق المراد تشغيله: org.mypackage.HelloWorld. ولكن يجب علينا أيضًا إخبار جافا بمكان البحث عن الملفات والمجلدات التي تُعرّف حزمتنا. لذا، لتشغيل البرنامج، نستخدم الأمر التالي:

مايكروسوفت ويندوزلينكس
java -classpath D:\myprogram org.mypackage.HelloWorld 
java -cp /home/user/myprogram org.mypackage.HelloWorld 

أين:

  • javaهو مشغل وقت تشغيل جافا ، وهو نوع من أدوات SDK (أداة سطر الأوامر، مثل javac أو javadoc أو apt )
  • يُحدد الخيار ‎-classpath D:\myprogram مسار الحزم المستخدمة في البرنامج (على نظام لينكس، ‎-cp /home/user/myprogram ) و
  • org.mypackage.HelloWorld هو اسم الفئة الرئيسية

تحديد المسار من خلال متغير بيئي

يمكن استخدام متغير البيئة المسمى CLASSPATHبدلاً من ذلك لتعيين مسار الفئات. في المثال أعلاه، يمكننا أيضًا استخدامه على نظام التشغيل ويندوز:

D:\myprogram> set CLASSPATH = D:\myprogram D:\myprogram> java org.mypackage.HelloWorld 

القاعدة هي أن هذا -classpathالخيار، عند استخدامه لبدء تشغيل تطبيق جافا، يتجاوز CLASSPATHمتغير البيئة. إذا لم يتم تحديد أي متغير، فسيتم استخدام دليل العمل الحالي كمسار للفئات. هذا يعني أنه عندما يكون دليل العمل لدينا هو D:\myprogram\(على نظام لينكس، /home/user/myprogram/)، فلن نحتاج إلى تحديد مسار الفئات بشكل صريح. مع ذلك، عند تجاوز هذا الخيار، يُنصح بتضمين المجلد الحالي "."في مسار الفئات في حالة الرغبة في تحميل الفئات من المجلد الحالي.

وينطبق الأمر نفسه ليس فقط على مشغل جافا ولكن أيضًا على javac ، وهو مترجم جافا.

تحديد مسار ملف JAR

إذا كان البرنامج يستخدم مكتبة داعمة مضمنة في ملف Jar يسمى supportLib.jar ، موجود فعليًا في الدليل D:\myprogram\lib\ وكان هيكل الملف الفعلي المقابل هو:

D:\myprogram\ | ---> lib\ | ---> supportLib.jar | ---> org\ | ---> mypackage\ | ---> HelloWorld.class ---> SupportClass.class ---> UtilClass.class 

يلزم استخدام خيار سطر الأوامر التالي :

java -classpath D:\myprogram;D:\myprogram\lib\supportLib.jar org.mypackage.HelloWorld

أو بدلاً من ذلك:

D:\myprogram> set CLASSPATH = D:\myprogram;D:\myprogram\lib\supportLib.jar D:\myprogram> java org.mypackage.HelloWorld 

إضافة جميع ملفات JAR في دليل

في Java 6 والإصدارات الأحدث، يمكن إضافة جميع ملفات jar في دليل معين إلى مسار الفئة باستخدام تدوين الأحرف البديلة.

مثال على نظام ويندوز:

D:\myprogram> java -classpath ".;c:\mylib\*" MyApp 

مثال على نظام لينكس:

$ java -classpath '.:/mylib/*' MyApp 

هذا ينطبق على كل من -classpathخيارات مسارات الفئات ومسارات فئات البيئة.

تحديد المسار في ملف البيان

إذا تم تضمين برنامج في ملف Jar يسمى helloWorld.jar ، موجود مباشرة في الدليل D:\myprogram ، فسيكون هيكل الدليل كما يلي:

D:\myprogram\ | ---> helloWorld.jar | ---> lib\ | ---> supportLib.jar 

يحتوي ملف البيان المحدد في helloWorld.jar على هذا التعريف:

الفئة الرئيسية : org.mypackage.HelloWorld مسار الفئة : lib/supportLib.jar

يجب أن ينتهي ملف البيان إما بسطر جديد أو بإرجاع المؤشر إلى بداية السطر.

يتم تشغيل البرنامج باستخدام الأمر التالي:

java -jar D:\myprogram\helloWorld.jar [app arguments]

يبدأ هذا تلقائيًا تشغيل org.mypackage.HelloWorld المُحدد في الفئة Main-Class مع الوسائط المُحددة. لا يمكن للمستخدم استبدال اسم هذه الفئة باستخدام الاستدعاء java -jar. يصف Class-Path موقع ملف supportLib.jar بالنسبة لموقع مكتبة helloWorld.jar . لا يدعم هذا الأمر مسار الملف المطلق، المسموح به في -classpathمُعامل سطر الأوامر، ولا المسارات الداخلية لملف jar. هذا يعني أنه إذا كان ملف الفئة الرئيسي موجودًا داخل ملف jar، فيجب أن يكون org/mypackage/HelloWorld.class مسارًا صالحًا في جذر ملف jar.

يتم فصل إدخالات مسار الفئة المتعددة بمسافات:

مسار الفئة : lib/supportLib.jar lib/supportLib2.jar

ملاحظات خاصة بنظام التشغيل

نظراً لارتباطها الوثيق بنظام الملفات، فإن صيغة سطر الأوامر Classpath تعتمد على نظام التشغيل. [ 1 ] على سبيل المثال:

لا ينطبق هذا عندما يتم تعريف مسار الفئة في ملفات البيان ، حيث يجب فصل كل مسار ملف بمسافة ("  ")، بغض النظر عن نظام التشغيل.

انظر أيضاً

مراجع

  1. "مسار الفصل الدراسي" . 6 أغسطس 2013. تم الاطلاع عليه بتاريخ 26-06-2016 .