مسار الفصل: CLASSPATH هو متغير بيئة يستخدمه تطبيق ClassLoader لتحديد موقع ملفات .class وتحميلها. يحدد CLASSPATH المسار للعثور على فئات الجهات الخارجية والفئات المعرفة من قبل المستخدم والتي ليست امتدادات أو جزءًا من نظام Java الأساسي. قم بتضمين كافة الدلائل التي تحتوي على ملفات .class وملفات JAR عند تعيين CLASSPATH.
تحتاج إلى تعيين CLASSPATH إذا:
شريا غوشال
- تحتاج إلى تحميل فئة غير موجودة في الدليل الحالي أو أي أدلة فرعية.
- تحتاج إلى تحميل فئة غير موجودة في الموقع المحدد بواسطة آلية الامتدادات.
يعتمد CLASSPATH على ما تقوم بتعيينه لـ CLASSPATH. يحتوي CLASSPATH على اسم دليل أو اسم ملف في النهاية. تصف النقاط التالية ما ينبغي أن يكون نهاية CLASSPATH.
- إذا كان الملف JAR أو ZIP يحتوي على ملفات فئة، فإن CLASSPATH ينتهي باسم ملف ZIP أو JAR.
- إذا تم وضع ملفات الفئة في حزمة غير مسماة، فسينتهي CLASSPATH بالدليل الذي يحتوي على ملفات الفئة.
- إذا تم وضع ملفات الفئة في حزمة مسماة، فإن CLASSPATH ينتهي بالدليل الذي يحتوي على الحزمة الجذرية في اسم الحزمة الكاملة، وهي الحزمة الأولى في اسم الحزمة الكاملة.
القيمة الافتراضية لـ CLASSPATH هي نقطة (.). وهذا يعني أن الدليل الحالي الوحيد الذي تم البحث فيه. يتم تجاوز القيمة الافتراضية لـ CLASSPATH عند تعيين متغير CLASSPATH أو استخدام الأمر -classpath (للاختصار -cp). ضع نقطة (.) في الإعداد الجديد إذا كنت تريد تضمين الدليل الحالي في مسار البحث.
إذا عثر CLASSPATH على ملف فئة موجود في الدليل الحالي، فسوف يقوم بتحميل الفئة ويستخدمها، بغض النظر عن نفس فئة الاسم الموجودة في دليل آخر والذي تم تضمينه أيضًا في CLASSPATH.
إذا كنت تريد تعيين مسارات فئات متعددة، فأنت بحاجة إلى فصل كل مسار CLASSPATH بفاصلة منقوطة (;).
يمكن لتطبيقات الطرف الثالث (MySQL وOracle) التي تستخدم JVM تعديل متغير بيئة CLASSPATH ليشمل المكتبات التي يستخدمونها. يمكن تخزين الفئات في الدلائل أو ملفات الأرشيف. يتم تخزين فئات منصة Java في rt.jar.
هناك طريقتان لتعيين CLASSPATH: من خلال موجه الأوامر أو عن طريق تعيين متغير البيئة.
جافا لا
دعونا نرى كيفية تعيين CLASSPATH لقاعدة بيانات MySQL:
الخطوة 1: انقر على زر Windows واختر لوحة التحكم. حدد النظام.
الخطوة 2: انقر فوق إعدادات النظام المتقدمة .
الخطوه 3: سوف يظهر صندوف حوار. انقر على متغيرات البيئة.
الخطوة 4: إذا كان CLASSPATH موجودًا بالفعل في متغيرات النظام، فانقر فوق الزر 'تحرير' ثم ضع فاصلة منقوطة (;) في النهاية. الصق مسار ملف MySQL-Connector Java.jar.
إذا لم يكن CLASSPATH موجودًا في متغيرات النظام، فانقر فوق الزر 'جديد' واكتب اسم المتغير كـ CLASSPATH وقيمة المتغير كـ C:Program FilesJavajre1.8MySQL-Connector Java.jar؛.;
تذكر: ضع؛.; في نهاية CLASSPATH.
الفرق بين PATH وCLASSPATH
طريق | كلاس باث |
---|---|
PATH هو متغير البيئة. | CLASSPATH هو أيضًا متغير بيئة. |
يتم استخدامه من قبل نظام التشغيل للعثور على الملفات القابلة للتنفيذ (.exe). | يتم استخدامه بواسطة تطبيق ClassLoader لتحديد موقع الملف .class. |
يجب عليك تضمين الدليل الذي يحتوي على ملفات .exe. | يجب عليك تضمين كافة الدلائل التي تحتوي على ملفات .class و JAR. |
لا يمكن تجاوز متغير بيئة PATH بمجرد تعيينه. | يمكن تجاوز متغير بيئة CLASSPATH باستخدام خيار سطر الأوامر -cp أو -CLASSPATH لكل من أمر javac وjava. |
كيفية تعيين CLASSPATH في نظام التشغيل Windows باستخدام موجه الأوامر
اكتب الأمر التالي في موجه الأوامر الخاص بك واضغط على Enter.
set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8 t.jar;
في الأمر أعلاه، المجموعة هي أمر DOS داخلي يسمح للمستخدم بتغيير قيمة المتغير. CLASSPATH هو اسم متغير. المتغير المحاط بعلامة النسبة المئوية (%) هو متغير بيئة موجود. الفاصلة المنقوطة عبارة عن فاصل، وبعد (؛) يوجد المسار لملف rt.jar.
.يساوي جافا
كيف يعمل المجلد ext في جافا
يعمل الدليل ext قليلاً مثل CLASSPATH. الدليل ext هو جزء من آلية تحميل الفصل. الفئات المتوفرة ضمن JARs في الدليل ext متاحة لتطبيقات Java.
يوضح الجدول التالي الفرق الرئيسي بين CLASSPATH وآلية الامتداد:
صفات | كلاس باث | آلية التمديد |
---|---|---|
ترتيب تحميل الطبقة | يتم تحميل CLASSPATH بعد تحميل التمهيد والامتداد. | الأحمال الخارجية بعد تحميل التمهيد ولكن قبل تحميل CLASSPATH. |
نِطَاق | وهو تطبيق محدد. جميع JREs الموجودة على المضيف هي متغير بيئة CLASSPATH. | تعمل جميع أجهزة JVM في JRE java.ext.dirs محدد. |
اسم الحزمة | يتم استخدام java.class.path للعثور على الدلائل وأرشيفات JAR التي تحتوي على ملفات الفئة. | يتم استخدام java.ext.dirs لتحديد المكان الذي تقوم فيه آلية الامتداد بتحميل الفئات. |
تخصيص | يتم تحديده بالاسم بما في ذلك الامتداد.jar والدليل الذي يحتوي على ملفات .class. | يتم تحميل جميع ملفات JAR الموجودة في الدلائل المحددة. |
ستقوم الآلية بالتقاط كافة ملفات .jar من دليل الامتداد حتى لو لم يكن الملف يحتوي على ملحق .jar. تنفيذ هذا هو أنه إذا كان من الممكن تغيير اسم الجرة الموضوعة في دليل classpath ليكون لها امتداد آخر غير .jar. حرف البدل (*) لا يلتقطه. لن تعمل هذه التقنية مع دليل الامتداد.
دعونا نفهم عملية التنفيذ من خلال مثال.
أ.جافا
public class A { public String toString() { return 'hello'; } }
ب.جافا
public class B { public static void main(final String[] args) { System.out.println(new A()); } }
ترجمة ملف A.java. سنقوم بأرشفة ملف A.class المترجم في A.jar. ضع ملف JAR هذا في دليل آخر غير ملف B.class المترجم.
لتوضيح استخدام مسار الفئة، نضع ملف A.jar في الدليل C:JavaPrograms وسنصل إلى JAR من خلال حرف البدل (*) ليستخدمه B.
لقد وجدنا أن B لا يزال بإمكانه تحميل الفئة A بينما قمنا بحذفها من الدليل الحالي. تم البحث بشكل صريح عن مشغل Java عن C:JavaProgram. من الممكن أيضًا تحميل الفصل دون وجوده في نفس الدليل ومواصفات مسار الفصل الصريحة.
تحويل int إلى سلسلة
غالبًا ما يشار إليها على أنها فائدة استخدام آلية الامتداد لأن جميع التطبيقات التي تستخدم JRE يمكنها رؤية نفس الفئات دون الحاجة إلى تحديدها في مسار الفصل بشكل صريح.
ماذا يحدث إذا قمنا بتغيير اسم A.jar إلى A.backup في نفس الدليل المشار إليه في CLASSPATH. تتم مواجهة NoClassDefFoundError عندما نفعل نفس الشيء لأن مرجع CLASSPATH لا يحتوي على الامتداد .jar.