كيفية تغيير Java JDK على macOS: 5 أخطاء للمبتدئين وحلولها

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

كيفية تغيير إصدار Java (JDK) على macOS بدون صداع: دليل لمن سئم من الأخطاء

\n\n

هل سبق لك أن حاولت تشغيل مشروع قديم على Java، وأصر على التعطل مع خطأ؟ أو العكس، بيئة التطوير الجديدة تتطلب JDK 17، بينما لديك JDK 8؟ إذا كنت تعمل على macOS، فبالتأكيد واجهت أن تبديل إصدار Java هو مهمة شاقة. يبدو أن الأمر java -version يعيش حياته الخاصة ولا يخضع لرغباتك.

\n\n

على Stack Overflow، جمع سؤال "How to set or change the default Java (JDK) version on macOS?" آلاف المشاهدات ومئات التعليقات. يختلط الأمر على الناس في المسارات، وينسون JAVA_HOME، ويكسرون النظام عن طريق الخطأ. دعنا نفهم مرة واحدة وإلى الأبد: كيفية إدارة JDK على Mac، وما الأخطاء التي تتربص بالمبتدئين وكيفية تجنبها.

\n\n

هذه المقالة ليست توثيقًا جافًا. سنخوض رحلة من الفوضى الكاملة إلى الفهم الواضح. هيا بنا!

\n\n

لماذا تتعامل macOS مع Java بشكل "غريب"؟

\n\n

أول شيء يجب فهمه: macOS هو نظام Unix، ولا يحب أن تضع الملفات يدويًا في مجلدات لا تنتمي إليها. تقوم Apple افتراضيًا بتثبيت JDK في /Library/Java/JavaVirtualMachines/، والأدوات النظامية مثل /usr/bin/java هي مجرد أغلفة تنظر إلى JAVA_HOME الخاص بك.

\n\n

الخطأ الأكثر شيوعًا هو محاولة إعادة تسمية أو حذف مجلد JDK. لا تفعل هذا! بدلاً من ذلك، عليك تعلم إدارة الروابط الرمزية ومتغيرات البيئة.

\n\n

الخطوة 1: معرفة إصدارات JDK المثبتة لديك

\n\n

قبل تغيير أي شيء، دعنا نرى ما لديك. افتح الطرفية ونفذ:

\n\n
/usr/libexec/java_home -V
\n\n

سترى شيئًا مثل:

\n\n
Matching Java Virtual Machines (3):\n    17.0.6 (x86_64) "Oracle Corporation" - "Java SE 17.0.6" /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home\n    11.0.18 (x86_64) "Oracle Corporation" - "Java SE 11.0.18" /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home\n    1.8.0_361 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_361.jdk/Contents/Home
\n\n

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

\n\n

الخطأ رقم 1: الاعتقاد أن export JAVA_HOME دائم

\n\n

غالبًا ما يكتب المبتدئون في الطرفية:

\n\n
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home\njava -version  # يظهر 17
\n\n

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

\n\n

الحل: أضف هذا السطر إلى ملف تكوين الصدفة الخاص بك. إذا كنت تستخدم zsh (الصدفة الافتراضية على macOS من Catalina فصاعدًا)، قم بتحرير الملف ~/.zshrc:

\n\n
echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 17)' >> ~/.zshrc\nsource ~/.zshrc
\n\n

إذا كان لديك bash (إصدارات macOS القديمة)، فاسم الملف هو ~/.bash_profile.

\n\n

الخطأ رقم 2: الخلط بين java و javac

\n\n

لقد غيرت JAVA_HOME، الأمر java -version يظهر الإصدار المطلوب، لكن javac -version يصر على إظهار الإصدار القديم. هل هذا مألوف؟

\n\n

يحدث هذا لأن java و javac هما ملفان تنفيذيان مختلفان. أحيانًا قد يكونان من إصدارات JDK مختلفة. تحقق من مكان وجودهما:

\n\n
which java   # /usr/bin/java\nwhich javac  # /usr/bin/javac
\n\n

إذا كانت المسارات متطابقة، فالمشكلة هي أن /usr/bin/java هو رابط رمزي قد يشير إلى إصدار قديم. قم بتحديثه باستخدام الأداة java_home:

المدونات

توصيات الكتب