هذا هو أمر clirr الذي يمكن تشغيله في موفر الاستضافة المجاني OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت
برنامج:
اسم
clirr - التحقق من التوافق المصدري والثنائي لمكتبات Java
موجز
clirr -o com.oldjar -n نيوجار [الخيارات]
الوصف
Clirr هي أداة تتحقق من توافق مكتبات Java الثنائية والمصدر مع الإصدارات الأقدم
إطلاق. في الأساس، يمكنك إعطاؤه مجموعتين من ملفات jar ويقوم Clirr بإخراج قائمة من ملفات jar
التغييرات في API العامة.
OPTIONS
-a, --إظهار كافة النطاقات
إظهار الطبقات الخاصة والحزمة
-f, --ملف إلاخراج
ضع اسم الملف
-i, --include-pkg
تشمل فقط فئات من هذه الحزمة وحزمها الفرعية
-n, --نسخة جديدة
jar للإصدار الجديد
-ncp, --new-classpath
مسار فئة الطرف الثالث الذي يتم الرجوع إليه بواسطة الإصدار الجديد
-o, --نسخة قديمة
ملفات jar من الاصدار القديم
-ocp, --orig-classpath
مسار فئة الجهة الخارجية الذي تمت الإشارة إليه بواسطة الإصدار القديم
-p, - عرض نطاق pkg
إظهار فئات نطاق الحزمة
-s, --نمط [نص|xml]
نمط الإخراج
الرسائل
عندما يقوم clirr بإنشاء رسالة خطأ أو تحذير أو معلومات حول حدوث تغيير في البرطمانات
مقارنة، هناك رمز مرجعي للرسالة المرتبطة. يحتوي هذا الدليل على
شرح لمعنى تلك الرسالة التي قد تحتوي على معلومات لا يمكن
يتم تركيبها في ملخص الرسالة القصيرة.
يتم فصل الرسائل إلى ثلاثة مستويات خطورة: الخطأ والتحذير والمعلومات.
الأخطاء تأتي على وجهين:
فشل وقت الارتباط، حيث سيتم طرح استثناء بمجرد تجميع التعليمات البرمجية
مقابل إصدار قديم من الفصل الدراسي ويتم تحميل الإصدار الجديد من الفصل فيه
نفس التسلسل الهرمي لمحمل الفئة.
فشل وقت التشغيل، حيث يتم طرح استثناء عند تجميع التعليمات البرمجية مقابل القديم
يحاول إصدار الفصل استدعاء أسلوب ما في إصدار جديد من الفصل، أو نائبه
بالعكس.
يقوم Clirr بالإبلاغ عن "الأخطاء" في الحالات التي يكون فيها من الممكن حدوث فشل في وقت التشغيل. سواء
يمكن أن يعتمد حدوث أحد التغييرات فعليًا على الطريقة التي يتم بها استدعاء المكتبة، أي الإبلاغ عن التغييرات
حيث أن الخطأ قد ينجح في الواقع عند استخدامه طالما أن أنماط استخدام المكتبة تفعل ذلك
لا تؤدي إلى حالة الفشل.
يتم إصدار تحذيرات في الحالات التي لا يحدث فيها أي ارتباط أو استثناء في وقت التشغيل، ولكن
حيث قد يتصرف التطبيق بشكل غير متوقع بسبب التغييرات التي حدثت.
تزود رسائل المعلومات المستخدمين بمعلومات حول الميزات الجديدة التي تم إضافتها
تمت إضافتها دون كسر التوافق مع الإصدارات السابقة بأي شكل من الأشكال.
عند استخدام clirr للإبلاغ عن التغييرات التي تطرأ على العناصر التي لها نطاق خاص أو نطاق الحزمة، فإن هذه التغييرات
يتم الإبلاغ عن التغييرات دائمًا كتغييرات على مستوى المعلومات، وليس كمستوى تحذير أو خطأ. هذا
يسمح لمستخدمي clirr بإنشاء "تقارير التغيير" بمستوى مناسب للمطورين
دون وضع علامة (بشكل غير ذي صلة) على بعض هذه التغييرات على أنها حالات عدم توافق ثنائي.
لا يمكن أبدًا أن يكون هناك عدم توافق ثنائي للتغييرات في الفئات أو الأساليب أو
الحقول حيث أن هذا الوصول لا يمكن أن يحدث إلا من داخل نفس الفئة (أي نفس التجميع
وحدة).
لا يُبلغ Clirr عن تحذيرات أو أخطاء عدم التوافق الثنائي للعناصر ذات نطاق الحزمة
إما لأن حزم Java تهدف إلى أن تكون "وحدات إصدار"، أي جميع الفئات الموجودة بداخلها
يتم تجميع الحزمة معًا (ضمان التوافق) ثم إصدارها كوحدة واحدة. الوحيد
الوقت الذي قد يكون فيه عدم توافق نطاق الحزمة مشكلة هو عندما يكون مستخدمو ملف
تكتب المكتبة فصولها الخاصة باستخدام إعلان الحزمة التابع لبعض الجهات الخارجية
مكتبة ، أو عند استخدام مجموعة فرعية من الفئات المحدثة (مثل فئة واحدة) من حزمة
لتجاوز فئات معينة من إصدار سابق للمكتبة. كلاهما
تعتبر المواقف ممارسة سيئة للغاية من خلال اتفاقية برمجة Java.
في الأقسام التالية، يتم استخدام المصطلح "القديم" للإشارة إلى فئة أو واجهة أو طريقة
أو حقل من مجموعة الجرار التي تمثل الإصدار القديم/السابق/الأصلي/الأساسي
المكتبة التي يتم تفتيشها. يُستخدم المصطلح "جديد" للإشارة إلى فئة أو واجهة أو
طريقة أو حقل من مجموعة الجرار التي تمثل الإصدار الجديد/الحالي/الأحدث من
المكتبة قيد التفتيش.
في الأقسام التالية، يتم استخدام مصطلح "النوع" للإشارة إلى شيء قد يكون
إما فئة أو واجهة.
1000 - زيادة رؤية of فئة
الخطورة: معلومات
النوع المحدد موجود في كلا الإصدارين، ولكن محدد الوصول المعلن عنه موجود
تم تغييره لتخفيف القيود المفروضة على ما يمكن لأي كود آخر الوصول إليه.
قد تحتوي الأنواع ذات المستوى الأعلى (أي تلك التي لم تتداخل ضمن فئة أخرى) على
إمكانية الوصول "الحزمة" أو "العامة". يمكن للأنواع المتداخلة أن تأخذ أيًا من الأنواع الأربعة
قيم إمكانية الوصول المتاحة
بغض النظر عما إذا كان الكائن من المستوى الأعلى أو متداخلاً، يحدث تغيير في إمكانية الوصول
من اليسار إلى اليمين من التسلسل خاص-> حزمة-> محمية-> عامة دائمًا
يضمن أن جميع التعليمات البرمجية التي يمكنها الوصول مسبقًا إلى هذا النوع لا يزال بإمكانها الوصول إلى ذلك
يكتب. ولذلك فإن مثل هذا التغيير يكون دائمًا متوافقًا مع التعليمات البرمجية المصدرية والثنائية.
لاحظ أن الإعلان "محمي" يوفر الوصول إلى كلا الكودين المشتقين من ملف
اكتب ورمزًا داخل نفس الحزمة، أي أن إمكانية الوصول "المحمية" تعني أيضًا
إمكانية الوصول إلى الحزمة.
1001 - انخفض رؤية of فئة
الخطورة: خطأ
النوع المحدد موجود في كلا الإصدارين، ولكن محدد الوصول المعلن عنه موجود
تم تغييره لتشديد القيود المفروضة على التعليمات البرمجية الأخرى التي يمكن الوصول إليها.
قد تحتوي الأنواع ذات المستوى الأعلى (أي تلك التي لم تتداخل ضمن فئة أخرى) على
إمكانية الوصول "الحزمة" أو "العامة". يمكن للأنواع المتداخلة أن تأخذ أيًا من الأنواع الأربعة
قيم إمكانية الوصول المتاحة
بغض النظر عما إذا كان النوع ذو مستوى أعلى أو متداخل، فإن هناك تغييرًا في إمكانية الوصول
من اليسار إلى اليمين للتسلسل العام->المحمي->الحزمة->الخاص قد يسبب
التعليمات البرمجية الموجودة والتي يمكنها الوصول مسبقًا إلى النوع لم تعد قادرة على القيام بذلك.
ينص القسم 13.4.3 من مواصفات لغة Java صراحة على أن
يجب أن يحدث IllegalAccessError إذا حاول ثنائي موجود مسبقًا الوصول إلى نوع ما
عندما يتم تغيير إمكانية الوصول إلى النوع إلى شيء قد يتسبب في حدوث
خطأ في وقت الترجمة. ولكن لا يبدو أن هذا يتم تطبيقه في الممارسة العملية
الأقل في JVMs الحالية. ومع ذلك، ينبغي أن يكون هذا خطأ، وبالتالي فإن تقارير clirr
هذا التغيير كخطأ في التوافق الثنائي.
2000 - تغير تبدأ من فئة إلى الواجهة
الخطورة: خطأ
أصبحت الفئة المحددة واجهة في الإصدار الجديد. هذا التغيير هو
دائمًا ما يكون هناك عدم توافق ثنائي مع الكود المصدري، لأسباب واضحة.
2001 - تغير تبدأ من الواجهة إلى فئة
الخطورة: خطأ
أصبحت الواجهة المحددة فئة في الإصدار الجديد. هذا التغيير هو
دائمًا ما يكون هناك عدم توافق ثنائي مع الكود المصدري، لأسباب واضحة.
3001 - إزالة نهائي تغيير تبدأ من فئة
الخطورة: معلومات
تم إعلان الفئة المحددة نهائية في الإصدار القديم، ولكنها لم تعد نهائية
في النسخة الجديدة.
3002 - وأضاف نهائي تغيير إلى على نحو فعال نهائي فئة
الخطورة: معلومات
لم يتم الإعلان عن الفئة المحددة نهائية في الإصدار القديم، ولكن تم الإعلان عنها الآن
أخير. عادة، قد يكون هذا عدم توافق لأن الموجود مسبقًا مشتق
لن تعد الفئات صالحة عند استخدامها مع الإصدار الجديد من هذه الفئة.
ولكن في هذه الحالة، لم يكن لدى الإصدار القديم منشئ عام أو محمي،
لذلك لم يكن من الممكن وجود أي فئات مشتقة حتى في الإصدار القديم من
المكتبة. وبالتالي ، فإن تغيير هذه الفئة إلى الفئة النهائية لا يمكن أن يكسر أي شيء موجود
رمز.
3003 - وأضاف نهائي تغيير إلى فئة
الخطورة: خطأ
لم يتم الإعلان عن الفئة المحددة نهائية في الإصدار القديم، ولكن تم الإعلان عنها الآن
أخير. أي فئات موجودة مسبقًا والتي تم الإعلان عنها كفئات فرعية لهذه الفئة
وبالتالي لن تكون صالحة مع الإصدار الجديد من المكتبة.
يتم طرح خطأ VerifyError بواسطة أداة تحميل الفئة عند محاولة تحميل ملف
فئة فرعية من الطبقة النهائية.
لاحظ أنه يتم تحميل الفئة Y بواسطة أداة تحميل الفئة القياسية فقط عندما يتم تحميل الفئة Y لأول مرة
تم إجراء محاولة لإنشاء مثيل Y، أو للإشارة مباشرة إلى الفئة
كائن للفئة Y. إذا كانت هناك فئة X أخرى تحتوي على الفئة Y كعضو معلن، أو كعضو
معلمة لبعض الطرق، فإن تحميل الفئة X لا يؤدي إلى تحميل الفئة Y.
3004 - إزالة ملخص تغيير تبدأ من فئة
الخطورة: معلومات
تم الإعلان عن الإصدار القديم من هذه الفئة على أنها فئة مجردة. النسخة الجديدة
ليست مجردة، مما يسمح للمستخدمين بإنشاء مثيلات للفئة.
3005 - وأضاف ملخص تغيير إلى فئة
الخطورة: خطأ
لم يتم الإعلان عن أن الإصدار القديم من هذه الفئة مجردة. الإصدار الجديد هو
خلاصة. لم يعد الكود الموجود مسبقًا والذي يقوم بإنشاء مثيلات لهذه الفئة موجودًا
صالحة مع الإصدار الجديد.
4000 - وأضاف الواجهة إلى هيه طقم of نفذت واجهات
الخطورة: معلومات
الإصدار الجديد من النوع ينفذ الآن واجهة إضافية. لم يحدث ذلك
يبطل أي كود موجود (المصدر أو الثنائي)، وهو بالكامل
تغيير متوافق مع الإصدارات السابقة.
لاحظ أنه يمكن الإبلاغ عن هذه الرسالة دون حدوث أي تغيير في ملف
النوع المحدد سيؤدي التغيير في مجموعة الواجهات التي يدعمها النوع إلى حدوث
سيتم الإبلاغ عن هذه الرسالة لكل سليل من هذا النوع.
4001 - إزالة الواجهة تبدأ من هيه طقم of نفذت واجهات
الخطورة: خطأ
أعلن الإصدار القديم من هذا النوع أنه قام بتنفيذ واجهة والتي
فئة جديدة أو واجهة لا. التعليمات البرمجية الموجودة التي يتم الإدلاء بها بشكل صريح أو ضمني
كائنات من هذا النوع للواجهة المفقودة الآن لم تعد صالحة.
لاحظ أنه يمكن الإبلاغ عن هذه الرسالة دون حدوث أي تغيير في ملف
النوع المحدد سيؤدي التغيير في مجموعة الواجهات التي يدعمها النوع إلى حدوث
سيتم الإبلاغ عن هذه الرسالة لكل سليل من هذا النوع.
5000 - وأضاف فئة إلى هيه طقم of الطبقات المتفوقة
الخطورة: معلومات أو تحذير
يحتوي الإصدار الجديد من الفصل على فئة في التسلسل الهرمي للميراث الخاص بها وهو الإصدار القديم
لم يحدث ذلك، إما لأن أصله المباشر أصبح الآن فئة مختلفة، أو
لأن إحدى فئاتها الأم قد غيرت التسلسل الهرمي للميراث.
إذا كانت الفئة المحددة لها java.lang.Throwable كأصل، فهذا التغيير هو
تم الإبلاغ عنها كتحذير ، لأن هذا التغيير في الفئة قد يؤدي إلى تغيير اصطياد الاستثناءات
سلوك البرامج التي تستخدم هذه الفئة.
لاحظ أنه يمكن الإبلاغ عن هذه الرسالة دون حدوث أي تغيير في ملف
فئة محددة سوف يحدث تغيير في مجموعة الفئات الفائقة لفئة الأسلاف
يتسبب في الإبلاغ عن هذه الرسالة لكل فئة تابعة.
5001 - إزالة فئة تبدأ من هيه طقم of الطبقات المتفوقة
الخطورة: خطأ
يحتوي الإصدار القديم من هذه الفئة على فئة في التسلسل الهرمي للميراث الخاص بها
الإصدار الجديد لا يحدث ذلك، إما لأن أصله المباشر أصبح الآن فئة مختلفة، أو
لأن إحدى فئاتها الأم قد غيرت التسلسل الهرمي للميراث.
التعليمات البرمجية الموجودة التي تنقل كائنات من هذا النوع بشكل صريح أو ضمني إلى الوقت الحاضر
لم يعد نوع الفصل المفقود صالحًا.
لاحظ أنه يمكن الإبلاغ عن هذه الرسالة دون حدوث أي تغيير في ملف
فئة محددة سوف يحدث تغيير في مجموعة الفئات الفائقة لفئة الأسلاف
يتسبب في الإبلاغ عن هذه الرسالة لكل فئة تابعة.
لاحظ أيضًا أنه إذا كانت هذه الفئة تحتوي على Throwable في أسلافها، فإن الفئة
يمكن أن يؤدي تغيير التسلسل الهرمي أيضًا إلى حدوث تغييرات في سلوك التقاط الاستثناءات
البرامج التي تستخدم هذه الفئة.
6000 - وأضاف حقل
الخطورة: معلومات
تحتوي الفئة الجديدة على عضو مثيل إضافي أو ثابت. هذا التغيير
متوافق تمامًا مع الإصدارات السابقة.
6001 - إزالة حقل
الخطورة: خطأ
قام الفصل الجديد بإزالة حقل موجود في الإصدار القديم. الكود الموجود مسبقًا
الذي يصل مباشرة إلى هذا الحقل لن يكون صالحًا بعد الآن.
6002 - القيم of حقل لا يعد a وقت التحويل البرمجي ثابت
الخطورة: تحذير
تم السماح للتعليمات البرمجية التي تم تجميعها وفقًا للإصدار القديم من الفصل "بتضمين" ملف
قيمة هذا الحقل لأنه كان ثابتًا في وقت الترجمة. ولذلك موجود
سيستمر الكود الثنائي في استخدام القيمة القديمة لهذا الحقل، بدلاً من القيمة الجديدة
القيمة (التي لا يمكن تضمينها).
6003 - القيم of وقت التحويل البرمجي ثابت لديها غير
الخطورة: تحذير
تم السماح للتعليمات البرمجية التي تم تجميعها وفقًا للإصدار القديم من الفصل "بتضمين" ملف
قيمة هذا الحقل لأنه كان ثابتًا في وقت الترجمة. ولذلك موجود
سيستمر الكود الثنائي في استخدام القيمة القديمة لهذا الحقل، بدلاً من القيمة الجديدة
.
6004 - الحقل نوع غير
الخطورة: خطأ
النوع المرتبط بالعضو الثابت أو المثيل المحدد
لقد تغير الفصل. لا يجوز استخدام الكود الموجود مسبقًا والذي يصل مباشرة إلى هذا الحقل
يعد صالحًا، وبالتالي يعد هذا تغييرًا غير متوافق.
6005 - الحقل الآن غير نهائية
الخطورة: معلومات
كان الميدان نهائيًا في السابق ولم يعد نهائيًا. هذا يعني أن المجال
يمكن الآن تعديل القيمة خلال عمر الفئة أو المثيل.
ما إذا كان من الممكن "تضمين" قيمة في الحقل مسبقًا في فئات أخرى أم لا
المشكلة التي تناولتها الرسالتان 6002 و6003، وليس هذه الرسالة.
6006 - الحقل الآن نهائي
الخطورة: خطأ
لم يعد من الممكن تعديل الحقل أثناء عمر الفئة أو المثيل.
ولذلك فإن الكود الذي قام بتعديل هذا الحقل مسبقًا لم يعد صالحًا.
6007 - الحقل الآن غير ثابت
الخطورة: خطأ
أصبح الحقل الآن متغير مثيل وليس متغير فئة. الكود الذي
تم الوصول إلى هذا الحقل مسبقًا عبر الفصل بدلاً من مثيل للفئة
لم يعد صالحا.
6008 - الحقل الآن ساكن
الخطورة: خطأ
أصبح الحقل الآن متغير فئة وليس متغير حالة.
لسبب ما (من المفترض أن تكون مشكلات في التنفيذ الداخلي)، تم استخدام معيار Java
يعلن أن هذا التغيير غير متوافق مع النظام الثنائي، وأن
سيتم طرح IncompatibleClassChangeError إذا تم تجميع التعليمات البرمجية مقابل "القديم"
يتم استخدام إصدار الفئة مع الإصدار "الجديد" الذي يوجد به الحقل الآن
ثابتة.
لأن الكود المصدري مسموح له بالوصول إلى متغيرات الفئة عبر مثيلات ذلك
فئة، من المتوقع أن يكون هذا تغييرًا متوافقًا مع التعليمات البرمجية المصدر. لكن حاليا
يُبلغ CLIRR عن هذا كخطأ فيما يتعلق بتوافق التعليمات البرمجية المصدر أيضًا.
6009 - الحقل المزيد متاحة
الخطورة: معلومات
في الإصدار الجديد، يمكن الوصول إلى الحقل المحدد لعدد أكبر من التعليمات البرمجية عما كان عليه من قبل
سابقا.
6010 - الحقل أقل متاحة
الخطورة: خطأ
في الإصدار الجديد، يمكن الوصول إلى الحقل المحدد بواسطة تعليمات برمجية أقل مما كانت عليه من قبل
سابقًا. لذلك قد لا تكون الشفرة الحالية صالحة.
6011 - إزالة ثابت الحقل
الخطورة الثنائية: تحذير
خطورة المصدر: خطأ
قام الفصل الجديد بإزالة حقل موجود في الإصدار القديم. المصدر الموجود مسبقًا
الرمز الذي يصل مباشرة إلى هذا الحقل لن يكون صالحًا بعد الآن.
في السابق، كان الحقل نهائيًا وتمت تهيئته بقيمة ثابتة.
لذلك، سيتم تضمين التعليمات البرمجية التي تم تجميعها وفقًا للإصدار السابق من الفصل
هذا الثابت وسيستمر في العمل باستخدام القيمة السابقة لهذا الحقل. أ
يتم إصدار تحذير لأن هذا غالبًا ما يكون سلوكًا غير مرغوب فيه. ومع ذلك فهو ليس أ
عدم التوافق الثنائي.
7000 - خدمة التوصيل الآن in الفئة الفائقة
الخطورة: معلومات
كان للفئة القديمة طريقة تسمى X. ولم تعد الفئة الجديدة تحتوي على هذه الطريقة، ولكن a
تحدد الفئة الأصل هذه الطريقة، لذلك لا يوجد أي عدم توافق ثنائي أو مصدر
حدث.
لاحظ أن هذا التغيير قد يكون له تأثير في فرض أن يصبح الفصل الجديد
'خلاصة'. إذا كانت هذه هي الحالة ، فسيتم الإبلاغ عن هذا التغيير بشكل منفصل.
7001 - خدمة التوصيل الآن in السطح البيني
الخطورة: معلومات
كانت الفئة أو الواجهة القديمة تحتوي في السابق على طريقة تسمى X. أما الفئة الجديدة أو
لم تعد الواجهة تحتوي على هذه الطريقة، لكن الواجهة الأصلية تحدد ذلك
الطريقة، لذلك لم يحدث أي عدم توافق ثنائي أو مصدر.
لاحظ أن هذا التغيير قد يكون له تأثير في فرض أن يصبح الفصل الجديد
'خلاصة'. إذا كانت هذه هي الحالة ، فسيتم الإبلاغ عن هذا التغيير بشكل منفصل.
7002 - خدمة التوصيل إزالة
الخطورة: خطأ
تحتوي الفئة أو الواجهة القديمة على طريقة تسمى X. أما الفئة أو الواجهة الجديدة فلا يوجد
يعد هذا الأسلوب ، ولم يتم تعريف هذه الطريقة في أي فئة أصل أو
واجهة.
يعتمد ما إذا كان هناك خطأ يحدث بالفعل في وقت التشغيل لهذا التغيير على الاستخدام
أنماط. يمكن استخدام الفئة المعدلة مع الكود الحالي طالما كان ذلك
لا يحاول الرمز الموجود استدعاء الأسلوب الذي تمت إزالته. إذا نداء للمفقودين
تم إنشاء الطريقة، ثم يتم إنشاء استثناء NoSuchMethodError عندما يتم إنشاء الطريقة
يحدث الدعاء.
7003 - خدمة التوصيل تجاوز إزالة
الخطورة: معلومات
كانت الطريقة المحددة في الفئة أو الواجهة القديمة تتجاوز الطريقة الموروثة
تعريف. لم تعد الفئة أو الواجهة الجديدة تحتوي على هذه الطريقة بشكل صريح
المعلن عليه، لكنه لا يزال يرث تعريفًا لذلك لا يوجد ثنائي
عدم توافق. 7004 - تم تغيير عدد وسيطات الطريقة
الخطورة: خطأ
تمت إضافة أو إزالة الوسائط للطريقة المحددة. وهذا يعني أن الرمز الذي
تم استدعاؤه مسبقًا ولن يستدعي نفس الطريقة بعد الآن.
إذا كان هناك تعريف أسلوب موروث مع النموذج الأولي القديم، فلا يوجد
عدم التوافق الثنائي؛ الكود الذي تم تجميعه مقابل الإصدار القديم من هذا
سوف يقوم الفصل الآن باستدعاء التنفيذ الموروث. في هذه الحالة، ينبغي clirr
إخراج رسالة INFO بدلاً من خطأ. ولكن في التاريخ الحالي، clirr
لا يتحقق من هذا الوضع.
إذا لم يكن هناك تعريف أسلوب موروث مع النموذج الأولي القديم، فسيتم التغيير
هو عدم التوافق الثنائي.
7005 - خدمة التوصيل حجة النوع غير
الخطورة الثنائية: معلومات أو خطأ
خطورة المصدر: خطأ
تم تعديل نوع واحدة أو أكثر من الوسائط الخاصة بالأسلوب المحدد.
وهذا يعني أن التعليمات البرمجية التي تم تجميعها مقابل الإصدار القديم من الفصل لن تعد موجودة
استدعاء نفس الطريقة. ولكن بالضبط نفس كود المصدر القديم، عند تجميعه
ضد إصدار الفئة الجديد قد يستدعي هذه الطريقة إذا كانت أنواع الوسيطات
متوافق مع المهام.
إذا كان هناك تعريف أسلوب موروث مع النموذج الأولي القديم، فلا يوجد
عدم التوافق الثنائي؛ الكود الذي تم تجميعه مقابل الإصدار القديم من هذا
سوف يقوم الفصل الآن باستدعاء التنفيذ الموروث. في التاريخ الحالي، يقوم clirr بذلك
لا تحقق لهذا الوضع.
إذا لم يكن هناك تعريف أسلوب موروث مع النموذج الأولي القديم، فسيتم التغيير
هو عدم التوافق الثنائي.
إذا تغيرت أنواع المعلمات، فسيتم تغييرها جميعًا إلى الأنواع الفائقة السابقة لها
الأنواع المعلنة، أو لأنواع المعلمات البدائية إذا تم تغييرها إلى "أكبر"
في كل حالة، فإن الكود الجديد يكون متوافقًا مع الكود المصدري السابق
الإصدار حتى لو لم يكن متوافقًا مع النظام الثنائي. لاحظ أنه في هذه الحالة،
قد تؤدي إعادة ترجمة التعليمات البرمجية التي تستخدم المكتبة إلى تغيير سلوكها من خلال استدعاء ملف
طريقة موروثة لاستدعاء طريقة في الفصل تختلف قليلاً
النموذج المبدئي. في التاريخ الحالي، لا يتحقق clirr من هذا الموقف.
7006 - خدمة التوصيل الإرجاع النوع غير
الخطورة الثنائية: خطأ
خطورة المصدر: معلومات أو خطأ
تم تغيير نوع الإرجاع المعلن للطريقة المحددة. سواء كانت مشكلة
يحدث بالفعل في وقت التشغيل عند استخدام التعليمات البرمجية المترجمة مقابل الإصدار القديم من هذا
تعتمد المكتبة على أنماط الاستخدام. قد يستدعي الكود القديم طرقًا أخرى في هذه الفئة.
ومع ذلك، فإن أي محاولة لاستدعاء الطريقة التي تغير نوع الإرجاع الخاص بها ستؤدي إلى
يتم طرح NoSuchMethodError عند استدعاء الطريقة، لأن الإرجاع
النوع جزء من "توقيع الطريقة".
يكون التغيير متوافقًا مع التعليمات البرمجية المصدر إذا وفقط إذا كان نوع الإرجاع الجديد كذلك
يمكن تعيينه لنوع الإرجاع القديم. هذا يعني ذاك:
إذا كان نوع الإرجاع القديم نوعًا بدائيًا، فيجب أن يكون نوع الإرجاع الجديد
أضيق من النوع القديم.
إذا كان نوع الإرجاع القديم عبارة عن واجهة، فيجب أن يكون نوع الإرجاع الجديد a
فئة أو واجهة تنفذ نوع الإرجاع القديم.
إذا كان نوع الإرجاع القديم عبارة عن فئة ، فيجب أن يكون نوع الإرجاع الجديد فئة فرعية
من النوع الذي تم إرجاعه مسبقًا.
لا يتحقق Clirr حاليًا من توافق التعليمات البرمجية المصدر للتغييرات في الطريقة
أنواع الإرجاع حاليًا يتم الإبلاغ عن هذه ببساطة على أنها خطأ.
7007 - خدمة التوصيل لديها كان
الخطورة: معلومات
تم التصريح عن الطريقة المحددة على أنها "مهملة". هذا دائمًا ملف
تغيير متوافق مع الثنائي بالإضافة إلى تغيير متوافق مع التعليمات البرمجية المصدر.
7008 - خدمة التوصيل لديها كان غير مقدس
الخطورة: معلومات
تم الإعلان عن أن الطريقة المحددة "مهملة" في الإصدار السابق، ولكنها ليست كذلك
تعد مهملة في الإصدار الحالي. على الرغم من أن هذا غير عادي بعض الشيء
مباح. يعد هذا التغيير دائمًا تغييرًا ثنائيًا متوافقًا بالإضافة إلى
تغيير متوافق مع التعليمات البرمجية المصدر.
7009 - خدمة التوصيل is الآن أقل متاحة
الخطورة: خطأ
تم تشديد أذونات الوصول المرتبطة بالطريقة المحددة
السماح برمز مستخدم أقل للوصول إلى الطريقة.
يعتمد ما إذا كان هذا التغيير يمثل مشكلة توافق التعليمات البرمجية المصدر أم لا
أنماط الاستخدام.
يجب أن يكون هذا التغيير عدم توافق ثنائي. ومع ذلك، لاحظ أن أجهزة JVM الحالية تفعل ذلك
لا التحقق من صحة هذا. يمكن تجميع التعليمات البرمجية مقابل إصدار سابق من الفصل الدراسي
استدعاء الأساليب التي لم يعد لديهم حقوق الوصول إليها بنجاح.
ومع ذلك، تنص مواصفات لغة جافا على أن هذا خطأ، لذلك
يُبلغ clirr عن هذا التغيير باعتباره عدم توافق ثنائي.
7010 - خدمة التوصيل is الآن المزيد متاحة
الخطورة: معلومات
تم تخفيف أذونات الوصول المرتبطة بالطريقة المحددة
السماح لمزيد من رمز المستخدم للوصول إلى الطريقة. هذا دائمًا رمز ثنائي ومصدر
تغيير متوافق.
7011 - خدمة التوصيل وأضاف
الخطورة: معلومات
تمت إضافة طريقة غير مجردة إلى الفئة المحددة. هذا هو دائما أ
تغيير ثنائي متوافق.
وهو أيضًا تغيير متوافق مع التعليمات البرمجية المصدر.
س: إذا تجاوزت الطريقة الجديدة الطريقة الموروثة، فما هو الإصدار الذي يقوم بالبرمجة؟
تجميعها ضد استدعاء المكتبة القديمة؟
7012 - خدمة التوصيل وأضاف إلى السطح البيني
الخطورة الثنائية: خطأ
خطورة المصدر: خطأ
تمت إضافة إعلان الطريقة إلى الواجهة المحددة. هذا دائما
تم الإبلاغ عنه على أنه خطأ في التوافق الثنائي، ولكن من الناحية العملية قد يحدث ذلك مع الفئة التي تم تغييرها
يمكن استخدامه بنجاح مع التعليمات البرمجية التي تم تجميعها مقابل الواجهة القديمة اعتمادًا على ذلك
أنماط الاستخدام.
الكود القديم الذي يستدعي الأساليب بناءً على الكود الذي تم تجميعه مقابل الجديد (الموسع)
ستستمر الواجهة في العمل دون مشاكل. والكود القديم الذي ينفذ
سيستمر الإصدار القديم من الواجهة أيضًا في العمل بشكل صحيح طالما لم يحدث ذلك
يحاول الكود استدعاء أي من الأساليب المضافة حديثًا مقابل هذا المثيل. لكن
الرمز الذي (بشكل صحيح) يستدعي إحدى الطرق الجديدة في الواجهة مقابل ملف
الكائن الذي يطبق الإصدار القديم فقط من الواجهة سوف يتسبب في حدوث خطأ
AbstractMethodError سيتم طرحه في وقت محاولة استدعاء الطريقة.
يتم دائمًا الإبلاغ عن إضافة أسلوب إلى واجهة كخطأ، لأن الفئات
التي تنفذ تلك الواجهة يجب الآن تعديلها لتنفيذ ما تم الإعلان عنه
الأسلوب.
7013 - ملخص خدمة التوصيل وأضاف إلى مبوبة
الخطورة الثنائية: خطأ
خطورة المصدر: خطأ
تمت إضافة إعلان أسلوب مجردة إلى الفئة المحددة. هذا هو
تم الإبلاغ عنها دائمًا على أنها خطأ توافق ثنائي، ولكن في الواقع تم تغيير الفئة
يمكن استخدامه بنجاح مع التعليمات البرمجية التي تم تجميعها مقابل الفئة القديمة اعتمادًا على ذلك
أنماط الاستخدام.
إذا تم إنشاء مثيلات للكائنات التي تم تجميعها مقابل الفئة القديمة، فسيتم حذفها
يمكن استدعاء الأساليب دون مشاكل. ولكن إذا كانت الطريقة المجردة المضافة حديثًا
تم استدعاء الطريقة من قبل، ثم يتم طرح AbstractMethodError في نفس الوقت
تتم محاولة الاستدعاء.
7014 - خدمة التوصيل الآن نهائي
الخطورة: خطأ
كانت الطريقة في السابق غير نهائية، وهي الآن نهائية. الفئات الفرعية من هذه الفئة
لن يتم تجميعها أو تشغيلها بعد الآن.
عندما تحتوي الفئة القديمة على هذه الطريقة، أصبحت هذه الطريقة نهائية (بشكل صريح أو من خلال توفير
منشئون خاصون) فلا يمكن أن توجد الفئات الفرعية. Clirr حاليا لا يتحقق
لهذه الحالة، لذلك فإن هذا سيثير إنذاراً كاذباً في بعض الحالات الركنية.
7015 - خدمة التوصيل الآن غير نهائية
الخطورة: معلومات
كانت الطريقة نهائية في السابق، وهي الآن غير نهائية. هذا هو دائما أ
تغيير ثنائي متوافق.
8000 - مبوبة وأضاف
الخطورة: معلومات
يحتوي الإصدار الجديد من المكتبة على فئة لم تكن موجودة في الإصدار القديم
الإصدار.
8001 - مبوبة إزالة
الخطورة: خطأ
لم يعد الإصدار الجديد من المكتبة يحتوي على الفئة المحددة.
أمثلة
التحقق من توافق المكتبة مع الإصدار السابق:
clirr -o foo-1.0.jar -n foo-2.0.jar
تحقق من التوافق مع الإصدارات السابقة لمكتبة جديدة اعتمادًا على تسجيل Apache Commons:
clirr -o foo-1.0.jar -n foo-2.0.jar -ocp /usr/share/Java/commons-logging.jar -ncp
/usr/share/Java/commons-logging.jar
الصفحة الرئيسية
http://clirr.sourceforge.net
نوفمبر 2013 كلير(1)
استخدم clirr عبر الإنترنت باستخدام خدمات onworks.net