«Android SDK installation doesn't find JDK» — ألم مألوف؟
\nهل تحاول إعداد بيئة التطوير لنظام Android، وتقوم بتشغيل تثبيت SDK، وفي المقابل لا تحصل على رد؟ أو ما هو أسوأ، خطأ أحمر: «Android SDK installation doesn't find JDK». إذا كنت قد بحثت عن هذه العبارة من قبل، فأنت تعلم: على Stack Overflow، هناك آلاف المشاهدات وعشرات الإجابات المخصصة لهذه المشكلة.
\nلماذا يحدث هذا؟ يبدو أنك قمت بتنزيل JDK وتثبيته، لكن النظام يرفض رؤيته. في هذه المقالة، لن نقوم فقط بتحليل الأسباب، بل سنعرض بأمثلة حقيقية من كود Java كيفية إعداد البيئة بشكل صحيح حتى يتعاون Android SDK أخيرًا مع JDK.
\nنحن فريق PythonLib، وعلى الرغم من أن اسمنا يحتوي على Python، إلا أننا نعلم أن Java هي أساس تطوير Android. ستكون مادة اليوم مفيدة لكل من يريد حل هذه المشكلة المزعجة مرة واحدة وإلى الأبد.
\n\nلماذا لا يرى Android SDK JDK؟ ثلاثة أسباب رئيسية
\nقبل أن نتعمق في الكود، دعنا نفهم العدو جيدًا. خطأ «Android SDK installation doesn't find JDK» يحدث غالبًا بسبب ثلاثة أشياء:
\n- \n
- المسار إلى JDK غير صحيح — ببساطة، المثبّت لا يعرف أين يبحث عن Java. \n
- متغير البيئة JAVA_HOME مفقود — يعتمد Android SDK عليه. \n
- تضارب الإصدارات — قمت بتثبيت JDK 32-bit بينما النظام 64-bit، أو العكس. \n
الأكثر إزعاجًا هو أنه حتى إذا قمت بتحديد المسار يدويًا في المثبّت، فقد يعود الخطأ. لماذا؟ لأن Android SDK يتحقق ليس فقط من المسار الصريح، ولكن أيضًا من متغيرات البيئة. دعنا نحلل كل حالة مع أمثلة.
\n\nالخطوة 1: التحقق من تثبيت JDK من الأساس
\nقبل إعداد أي شيء، تأكد من وجود JDK بالفعل. افتح الطرفية (سطر الأوامر) ونفّذ أمر Java بسيط:
\njava -version\nإذا رأيت شيئًا مثل:
\njava version "17.0.2" 2022-01-18 LTS\nJava(TM) SE Runtime Environment (build 17.0.2+8-LTS-86)\nJava HotSpot(TM) 64-Bit Server VM (build 17.0.2+8-LTS-86, mixed mode)\nكل شيء على ما يرام — JDK مثبت. إذا لم يتم العثور على الأمر، فهذا يعني أن المشكلة أعمق. تحتاج إلى تنزيل JDK من الموقع الرسمي لـ Oracle أو استخدام OpenJDK. لتطوير Android، يُوصى بالإصدار 11 أو 17.
\n\nمثال كود: التحقق من إصدار Java من الداخل
\nإذا كنت تكتب سكريبتًا بلغة Java للتحقق من البيئة، يمكنك استخدام الفئة المدمجة System:
public class CheckJavaVersion {\n public static void main(String[] args) {\n String version = System.getProperty("java.version");\n String home = System.getProperty("java.home");\n System.out.println("Java version: " + version);\n System.out.println("Java home: " + home);\n }\n}\nسيقوم هذا الكود بطباعة الإصدار والمسار إلى Java المثبتة. إذا كان java.home يشير إلى مجلد jre وليس jdk، فقد يكون هذا سبب الخطأ — يتطلب Android SDK JDK وليس JRE.
الخطوة 2: إعداد متغير JAVA_HOME
\nهذه هي النصيحة الأكثر شيوعًا على Stack Overflow، وهي تعمل. يجب أن يشير المتغير JAVA_HOME إلى المجلد الجذر لـ JDK، وليس إلى مجلد bin أو jre.
كيف تفعل ذلك؟
\n- \n
- Windows: لوحة التحكم ← النظام ← إعدادات النظام المتقدمة ← متغيرات البيئة. أنشئ متغير نظام جديد
JAVA_HOMEبقيمة مثل:C:\\Program Files\\Java\\jdk-17. \n - macOS/Linux: حرّر ملف
~/.bashrcأو~/.zshrcوأضف السطر:export JAVA_HOME=/usr/lib/jvm/jdk-17. \n
بعد ذلك، أعد تشغيل الطرفية وتحقق:
\necho %JAVA_HOME% # لنظام Windows\necho $JAVA_HOME # لنظام macOS/Linux\n\n