خطأ NoSuchMethodError في ماينكرافت: كيفية إصلاح مشكلة عدم وجود دالة جافا
خطأ NoSuchMethodError في ماينكرافت: كيفية إصلاح مشكلة عدم وجود دالة جافا
يشير خطأ NoSuchMethodError في ماينكرافت عادةً إلى أن أحد التعديلات أو المكتبات قد تم بناؤه لاستدعاء دالة غير موجودة في فئة ماينكرافت التي تم تحميلها أثناء التشغيل. في إصدار جافا المُعدّل، يُعدّ تحديد أول تعديل أو مكتبة مذكورة في تقرير الأعطال هو الحل الأمثل، ثم مطابقة هذا الملف مع إصدار ماينكرافت لديك، ومُحمّل التعديلات، وبيئة تشغيل جافا. العبارة java.langهي اسم حزمة جافا، ولا تُشير إلى خطأ خاص بلغة جافا في ماينكرافت.
اتبع الخطوات التالية على نسخة احتياطية أو نسخة منفصلة. لا تحذف عالمك أو إعداداتك أو سجلات الأعطال أثناء تشخيص المشكلة.
ما معنى خطأ NoSuchMethodError
يُصدر جافا خطأً NoSuchMethodErrorعندما يحاول الكود استدعاء دالة غير مُعرّفة في الفئة المُحمّلة في الذاكرة. تُعرّف أوراكل هذا الخطأ بأنه خطأ في الربط: الكود المُترجم والفئة المُتاحة أثناء التشغيل لا يتطابقان ( مرجع واجهة برمجة تطبيقات جافا ). في ماينكرافت، غالبًا ما ينشأ هذا الخطأ من تعديل أو مكتبة مُجمّعة مُصممة لإصدار مختلف من ماينكرافت، أو واجهة برمجة تطبيقات مُحمّلة، أو إصدار تبعيات مختلف.
إذا أشارت الرسالة إلى دالة Java java.lang.String.isBlank()، فتحقق من إصدار Java أيضًا. تُشير وثائق Oracle's Java 11 String APIString.isBlank() إلى توفرها منذ Java 11. قد يُشير هذا المثال إلى بيئة تشغيل قديمة، ولكنه مجرد دليل: يُحدد الخطأ الكامل وأولى إطارات تتبع المكدس ذات الصلة ما يجب فحصه لاحقًا.
استخدم Caused byالسطر والفئة أو الدالة المذكورة في الخطأ. يُعدّ الإطار الذي يحتوي على حزمة أو معرّف إضافة ما دليلاً، ولكنه ليس دليلاً قاطعاً على أن الإضافة نفسها هي السبب الوحيد؛ فقد تستدعي دالة مُقدّمة من إضافة أو مكتبة أخرى.
8 خطوات لإصلاح خطأ NoSuchMethodError في ماينكرافت
أعد بناء العالم واحفظ الخطأ
أغلق اللعبة وانسخ العالم المتأثر قبل تغيير التعديلات أو ملفات التحميل. بالنسبة للخوادم، اطلب من مالكها عمل نسخة احتياطية للعالم قبل الصيانة. احفظ تقرير الأعطال والنسخة الحالية latest.log؛ فهذا يساعد في مقارنة التغييرات التي طرأت بعد كل اختبار.
قم بعمل نسخة احتياطية من العالم قبل إجراء أي تغيير على أي نسخة أو خادم. أسماء المجلدات توضيحية فقط.
تحقق مما إذا كان الملف الشخصي النظيف يتعطل أيضًا
شغّل نفس إصدار ماينكرافت في ملف تعريف أصلي منفصل بدون أي تعديلات. في مشغل طرف ثالث، أنشئ نسخة جديدة بدلاً من تعديل حزمة التعديلات الوحيدة لديك. إذا اشتغل الإصدار الأصلي، فمن المرجح أن يكون الخطأ في ملف التعريف المُعدّل أو تبعياته. إذا فشل الإصدار الأصلي أيضاً، فتابع إلى فحوصات وقت التشغيل وتثبيت اللعبة أدناه.
استخدم ملف تعريف اختبار منفصل لعزل الملفات؛ مجلد المثال هذا ليس تثبيتًا حقيقيًا للمشغل.
اقرأ الطريقة الدقيقة وأول إطار مكدس مفيد
افتح أحدث تقرير عطل وابحث عن java.lang.NoSuchMethodError. لاحظ توقيع الدالة الكامل الذي يليه، ثم افحص الأسطر أدناه وأي Caused byقسم. غالبًا ما يُشير الإطار الموجود أسفل حزمة mod إلى الدالة المُستدعِية التي يجب فحصها. إذا كان الخطأ موجودًا فقط في latest.log، فابحث هناك عن نفس الدالة وأقدم استثناء ذي صلة.
مثال على تتبع المكدس: التقط الخطأ الكامل وأول إطار متعلق بالتعديل، وليس فقط العنوان.
توافق إصدارات ماينكرافت، والمحمل، والتعديلات
تأكد من أن كل إضافة مخصصة لإصدار Minecraft Java ، وهو الإصدار المحدد من اللعبة، والمُحمِّل المُثبَّت في ذلك الملف الشخصي - مثل Fabric أو Forge أو NeoForge. قد تنجح عملية تجميع إضافة مصممة لمُحمِّل آخر أو إصدار لعبة قريب، ولكنها قد تفشل عند تحميل واجهة برمجة تطبيقات مختلفة. تحقق أيضًا من المكتبات المطلوبة، بما في ذلك نطاق الإصدار المحدد. يُشير دليل تثبيت الإضافات الخاص بـ Fabric إلى ضرورة اختيار الإضافات المُناسبة لإصدار Minecraft و Fabric المُستهدفين، ويُلاحظ أن بعض الإضافات تتطلب واجهة برمجة تطبيقات Fabric.
قارن إصدار Minecraft وبنية المُحمِّل في ملف التعريف مع صفحة التنزيل لكل تعديل مشتبه به. لا تُثبِّت مُحمِّلًا أو مكتبةً أحدث دون التأكد من توافق التعديل معها. قيم الإصدارات في هذا المثال هي أمثلة فقط.
مثال للمقارنة: يحتاج كل ملف تعريف إلى إصدار محمل مخصص لإصدار Minecraft الخاص به؛ أرقام الإصدارات المعروضة هي لأغراض التوضيح فقط.
تحقق من وقت تشغيل Java المستخدم بواسطة هذا الملف الشخصي
يُظهر الأمر java -versionفي سطر الأوامر إصدار Java الافتراضي للنظام، والذي قد لا يكون هو بيئة التشغيل التي يستخدمها المُشغّل. عادةً ما يُدير مُشغّل Minecraft الرسمي بيئة تشغيل مُدمجة؛ بينما يُمكن لملفات تعريف المُشغّل المُخصصة والخوادم المُستقلة الإشارة إلى ملف Java تنفيذي آخر. تحقق من بيئة التشغيل المُكوّنة لملف التعريف المُتأثر قبل تغيير إعدادات Java على مستوى النظام.
استخدم متطلبات Java الخاصة بإصدار Minecraft المحدد. على سبيل المثال، تشير ملاحظات إصدار Minecraft 26.1 الرسمية إلى أن هذا الإصدار يتطلب Java 25. هذا الشرط ليس قاعدة عامة لجميع الإصدارات الأقدم. كما يوضح دليل تثبيت Java الخاص بـ Fabric أن مشغل Minecraft يتضمن تثبيت Java خاصًا به.
مخرجات الطرفية توضيحية فقط. تأكد من وقت التشغيل الذي اختاره مشغل أو خادم ماينكرافت، وليس فقط جافا الافتراضي على جهاز الكمبيوتر.
اعزل التعديل المشتبه به وتوابعه
في نسخة تجريبية منسوخة، انقل التعديل المشتبه به من modsالمجلد النشط وأعد تشغيل اللعبة. إذا توقف العطل، فتحقق من إصدارات اللعبة وبرنامج التحميل المدعومة لهذا التعديل، وقم بتحديثه إلى إصدار متوافق، أو استبعده. إذا أشارت سجلات النظام إلى مكتبة مشتركة، فاختبر هذه المكتبة والتعديلات التي تتطلبها معًا. بالنسبة للحزم الكبيرة، عطّل نصف التعديلات الاختيارية في كل مرة، ثم حدد المجموعة التي تُعيد إنتاج الخطأ.
حافظ على تثبيت التبعيات المطلوبة، وقم بتغيير مجموعة واحدة في كل مرة. ضع الملفات المعطلة خارج modsالدليل النشط؛ لا تقم بإعادة تسمية ملف JAR في مكانه وتفترض أن برنامج التحميل سيتجاهله.
انقل ملف JAR المشتبه به خارج مجلد التعديلات النشطة في نسخة تجريبية، ثم أعد الاختبار قبل تغيير الملفات الأخرى.
بالنسبة للعب الجماعي، تحقق من الجانب الذي يتعطل فعلياً.
إذا كان وضع اللاعب الفردي يعمل، ولكن الانضمام إلى خادم أو تشغيله يُسبب الخطأ، فافحص سجل الخادم وسجل العميل. تأكد من إصدارات Minecraft وLoader الخاصة بالخادم، وتحقق من متطلبات التعديلات الخاصة به مقارنةً بالعميل. بعض التعديلات مخصصة للعميل فقط أو للخادم فقط، لذا لا تنسخ كل ملف JAR إلى كلا الجانبين إلا إذا كانت وثائق التعديل أو الحزمة تتطلب ذلك. إذا كان الخادم نفسه يُظهر الخطأ، فيجب على مسؤول الخادم تحديث أو إزالة التعديل أو التبعية غير المتوافقة على جانب الخادم.
استخدم متطلبات التوافق الموثقة لحزمة التعديلات أو الخادم؛ هذه القائمة المرجعية هي مثال، وليست قاعدة عامة تنص على وجوب تثبيت كل تعديل على كلا الجانبين.
أعد بناء الملف الشخصي المتأثر فقط، ثم شارك السجل الصحيح.
بعد تحديد عدم التوافق، ثبّت تعديلًا أو تبعية متوافقة، أو أعد إنشاء ملف تعريف المُحمِّل المتأثر لنفس إصدار اللعبة باستخدام التعليمات الرسمية للمُحمِّل. اختبر اللعبة قبل استعادة التعديلات الاختيارية. إذا تعطل ملف تعريف اللعبة الأصلي أيضًا، فاستخدم ملف تعريف لعبة جديدًا ووقت التشغيل الصحيح للتمييز بين تثبيت تالف ومشكلة في التعديل؛ فإعادة تثبيت Java أو إضافة علامات JVM ليست الحل الأول لمشكلة في دالة مفقودة.
بالنسبة للمشغل الرسمي، تُحدد أدلة Fabric الخاصة بتقارير الأعطال وتحميل السجلات موقع ملف `/etc/files`crash-reports في logs/latest.logمجلد اللعبة. في نظام Windows، يكون المجلد الافتراضي هو %appdata%\.minecraft`/etc/files`؛ وفي macOS يستخدم `/etc/files` ~/Library/Application Support/minecraft؛ وفي Linux يستخدم `/ ~/.minecraftetc/files`. عادةً ما تحتفظ مشغلات الطرف الثالث بالسجلات داخل كل نسخة. شارك التقرير الكامل عبر خدمة لصق موثوقة أو قناة دعم المشغل، واحذف الرموز الخاصة أو أي بيانات سرية أخرى قبل النشر.
مثال على تخطيط السجل: قم بتضمين تقرير العطل الكامل أو ملف latest.log حول الخطأ؛ أسماء الملفات والطابع الزمني الموضحة هي لأغراض التوضيح فقط.
هل ستؤدي إضافة خيار --add-opens أو زيادة ذاكرة الوصول العشوائي (RAM) إلى حل المشكلة؟
عادةً، لا. --add-opensلا يُغيّر ذلك الوصول الانعكاسي إلى وحدات جافا؛ فهو لا يُضيف دالةً مفقودةً إلى فئة. كما أن الذاكرة الإضافية لا تُصلح عدم توافق إصدار البرنامج. غيّر وسائط JVM فقط عندما تُشير وثائق الوحدة أو المُحمّل الخاصة بإصدارك تحديدًا إلى ذلك، ويتوافق الخطأ المُبلغ عنه مع تلك النصيحة.
إذا لم يُحدد تتبع الأخطاء تحديثًا متوافقًا، فأرفق إصدار Minecraft الخاص بك، والمُحمِّل، وإصدار البناء، وبيئة تشغيل Java المستخدمة في الملف الشخصي، وقائمة التعديلات، وتقرير الأعطال الكامل، والخطوات التي تُعيد إنتاج الخطأ. هذا يُعطي مُطوري التعديلات معلومات كافية لتحديد عدم توافق واجهة برمجة التطبيقات أو التبعيات دون الحاجة إلى التخمين.