إصلاح: تعذر العثور على الفئة الرئيسية أو تحميلها

يحدث الخطأ " تعذر العثور على الفئة الرئيسية أو تحميلها " عند استخدام أمر java في موجه الأوامر لبدء تشغيل برنامج Java عن طريق تحديد اسم الفئة في الجهاز. سبب حدوث ذلك يرجع في الغالب إلى خطأ المستخدم في البرمجة أثناء الإعلان عن الفصل.

تعذر العثور على سطر أوامر Java الرئيسي أو تحميله

كما ذُكر سابقًا ، لا يرتبط هذا الخطأ في الغالب بالنظام ويخطئ المستخدم في عدة سيناريوهات كما هو موضح أدناه. قبل المضي قدمًا ، نفترض أن لديك معرفة أساسية بلغة برمجة Java وكيف تعمل.

ما سبب الخطأ "تعذر العثور على الفئة الرئيسية أو تحميلها" في Java؟

تعني الرسالة "تعذر العثور على الفئة الرئيسية أو تحميلها" أن الخطوة الأولى من محرك Java التي تجلب الفصل للتنفيذ قد فشلت. لم يتمكن الأمر java من تحديد موقع الفصل في الدليل الصحيح.

في بعض الحالات ، يجب عليك إضافة مسار الملف الصحيح وتوجيه محطة Java إلى الموقع الصحيح. نظرًا لأنك تقوم بتنفيذ الأمر من محطة سطر الأوامر ، فإن الكمبيوتر لا يعرف مكان وجود الفصل أو مكانه. في IDE المستهدفة ، ليست هذه هي المشكلة حيث يحتفظ IDE بمؤشر يشير إلى دليل العمل الحالي.

ما هو بناء جملة java؟

قبل أن نبدأ في استكشاف أخطاء سبب إرجاع الجهاز لنا خطأ عند محاولة التنفيذ ، نحتاج أولاً إلى إلقاء نظرة على بناء جملة الأمر. إذا كنت لا تستخدم بناء الجملة الصحيح ، فسوف تواجه هذا الخطأ لا محالة.

بناء الجملة الطبيعي للأمر هو شيء مثل هذا:

 جافا [...] [...] 

فيما يلي خيار سطر الأوامر ، وهو اسم فئة Java مؤهل تمامًا ، وهو وسيطة سطر أوامر يتم تمريرها إلى التطبيق الخاص بك عند تجميع الحزمة بالكامل.

مثال على أمر صالح هو:

 java -Xmx100m com.acme.example.ListAppuals kevin الأسهم bart 

الأمر أعلاه سيجعل الأمر java ينفذ العمليات التالية:

  • سيبحث عن إصدار مترجم من الفصل الدراسي " com.acme.example.ListAppuals ".
  • بعد البحث ، سيتم تحميل الفصل.
  • بعد ذلك ، عند تحميل الفصل ، سيتم البحث عن الفئة "الرئيسية" باستخدام توقيع صالح ، ومعدلات ، ونوع الإرجاع. عينة من الفئة الرئيسية ستكون مثل:
 ثابت الفراغ الرئيسي العام (سلسلة []) 
  • سيتم استدعاء الطريقة باستخدام الوسائط "kevin" و "الأسهم" و "bart" كسلسلة [].

كيفية الإصلاح "تعذر العثور على الفئة الرئيسية أو تحميلها"

الحل 1: التحقق من وسيطة اسم الفئة

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

  • كتابة اسم فئة بسيط . إذا قمت بتعريف الفئة في حزمة مثل "com.acme.example" ، فيجب عليك استخدام اسم الفئة الكامل بما في ذلك الحزمة في أمر Java.
 java com.acme.example.ListAppuals 

بدلا من

 جافا ListAppuals 
  • يجب أن تعلن اسم الفئة بدلاً من إعلان اسم ملف أو اسم مسار. لا يقوم Java بجلب الفصل إذا قمت بإعلان اسم مسار / اسم ملف له. تتضمن الإدخالات غير الصحيحة ما يلي:
 java ListAppuals.class java com / acme / example / ListAppuals.class 
  • يجب أن يؤخذ الغلاف في الاعتبار. تكون أوامر Java حساسة لحالة الأحرف وإذا ارتكبت خطأ حتى حرف واحد ، فلن تتمكن من تحميل الفئة الرئيسية. مثال عن الأخطاء غير الصحيحة :
 java com.acme.example.listappuals 
  • يجب أن لا تعلن اسم ملف المصدر . كما ذكرنا من قبل ، تحتاج فقط إلى إعلان الفصل بتنسيق اسم الفئة الكامل الصحيح. مثال على الخطأ هو:
 جافا ListAppuals.java 
  • سيحدث هذا الخطأ أيضًا إذا ارتكبت خطأً في الكتابة أو نسيت كتابة اسم الفصل بالكامل .

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

الحل 2: التحقق من classpath

إذا قمت بالإعلان عن classname بشكل صحيح ولكنك ما زلت تظهر الخطأ ، فمن المحتمل أن الأمر java لم يتمكن من العثور على classname المحدد في المسار. يعد classpath مسارًا يبحث فيه وقت تشغيل Java عن ملفات الموارد والفئة. يمكنك بسهولة ضبط classpath باستخدام أمرين مختلفين كما هو موضح أدناه:

 C:> sdkTool -classpath classpath1 ؛ classpath2 ... C:> تعيين CLASSPATH = classpath1 ؛ classpath2 ... 

للحصول على مزيد من التبصر بشأن classpath ، يجب عليك مراجعة المستندات التالية.

وثائق أوامر جافا

وضع classpath

الحل 3: التحقق من الدليل

عندما تقوم بتعريف دليل كصف مسار ، فسوف يتوافق دائمًا مع جذر مساحة الاسم. على سبيل المثال ، إذا كانت "/ usr / local / acme / classes" موجودة على classpath ، فستبحث Java عن فئة "com.acme.example.Appuals". سيبحث عن فئة مع اسم المسار التالي:

 /usr/local/acme/classes/com/acme/example/Appuals.class 

لذلك في الجوهر ، إذا وضعت العنوان التالي في classpath ، فلن تتمكن Java من العثور على الفصل:

 / البيرة / المحلية / قمة / فئات / كوم / قمة / المثال 

يجب عليك أيضًا التحقق من دليلك الفرعي ومعرفة ما إذا كان يطابق FQN. إذا كانت فصولك FQN "com.acme.example.Appuals" ، فسيبحث جافا عن "Appuals.class" في الدليل "com / acme / example".

لإعطاء مثال لك ، لنفترض السيناريو التالي:

  • الفئة التي تريد تشغيلها هي: com.acme.example.Appuals
  • مسار الملف الكامل هو: /usr/local/acme/classes/com/acme/example/Appuals.class
  • دليل العمل الحالي هو: / usr / local / acme / classes / com / acme / example /

بعد ذلك ستعقد السيناريوهات التالية:

 # wrong ، هناك حاجة إلى FQN java Appuals # wrong ، لا يوجد مجلد "com / acme / example" في دليل العمل الحالي java com.acme.example.Appuals # wrong ، على غرار السيناريو أعلاه java -classpath. com.acme.example.Appuals # OK؛ تم تعيين classpath النسبي java -classpath ../../ .. com.acme.example.Appuals # OK؛ تم تعيين classpath مطلق java -classpath / usr / local / acme / classes com.acme.example.Appuals 

ملاحظة: يحتاج classpath أيضًا إلى تضمين جميع الفئات الأخرى (غير النظامية) التي تحتاج إليها تطبيقاتك.

الحل 4: التحقق من حزمة الصف

إذا كانت جميع الحلول المذكورة أعلاه صحيحة في حالتك ، فستحتاج إلى التأكد من وضع شفرة المصدر في المجلد الصحيح. أيضا ، لقد أعلنت الحزمة بشكل صحيح. إذا قمت بتشغيل الرمز الخاص بك باستخدام IDE ، فمن المحتمل أن يعلمك بشأن المشكلة. ومع ذلك ، في حالتنا ، نظرًا لأننا نقوم بتشغيله في موجه الأوامر ، فإن الخطأ لن يتم ملاحظته وسوف تحصل على خطأ الفصل قيد المناقشة.

مقالات مثيرة للاهتمام