حل مشكلة java.lang.NoClassDefFoundError في لينكس ⸮

بسم الله و الصلاة والسلام على رسول الله
السبب الرئيسي لمشكلة الخطأين الشهيرين :
java.lang.NoClassDefFoundError
java.lang.ClassNotFoundException
في غالب الأحوال هو خطأ في تعيين قيمة java home و class path
في حال لم تسمع بهما من قبل إليك هذه التدوينة البسيطة في شرح هذين المفهومين :

سأفترض الآن أنك مدرك لما سبق و تريد تعيين القيم المناسبة
في البداية دعنا نعثر على مسارات jdk في جهازك
افتح الطرفية (موجه الأوامر terminal) و اضرب هذا الأمر :

sudo update-alternatives --config java

هذا سيعطيك المسارات لجافا.

في حالتي هذه لدي فقط openjdk-11
واذا لديك اصدارات أخرى سيتم عرضها.
ما يهمنا أنك حصلت على مسار الاصدار الذي تريد و قمت بنسخه لنضعه كقيمة JAVA HOME
تنويه : اذا كنت حملت jdk سابقا و ثبتها في opt اذا انت تعرف المسار ولا حاجة لك بالخطوة السابقة.

في جنو/لينكس او بشكل أدق في الصدفة (bash) نستعمل أمر export لتعيين قيم البيئة (enviroment)

اذا لتعيين المسار المنسوخ كقيمة لمنزل جافا ننفذ في الطرفية :
export JAVA_HOME =/usr/lib64/jvm/jre-11-openjdk/bin/java
ولنجعلها متوفرة لدى كل برامج جافا بشكل افتراضي ، سنقوم بتعيين هذه القيمة في bashrc وهو سكربت يتم تنفيذه عند كل تشغيل للصدفة وبالتالي اذا وضعنا export فيه فان القيمة ستكون متوفرة دائما لأي تطبيق جافا سيتم تشغيله و bashrc موجود في مجلد المنزل الخاص بمستخدمك , سأستعمل nano لتحريره واضافة export :
sudo nano ~.bashrc
وأضيف الأمر السابق.

بقي قيمة صف جافا وتعيينها كما سبق
export CLASSPATH=.

6 إعجابات