سؤال

أريد التحقق من التوافق الثنائي بين 2 الجر.

بعد الاقتراحات في هذا إجابه انا إستعملت JBoss tattletale. ولكن يمكن أن تجد الفصول المفقودة فقط.

كيف يمكنني أن أجد ما إذا كان هناك طرق مفقودة؟ هل هذا من الممكن بأبة طريقة؟

على سبيل المثال

"يعتمد - على" الطبقة " فو يعتمد على الشريط (مثل العديد من عمال الطبقة الوسطى الأخرى)

import org.overlyusedclassnames.Bar

public class Foo{
    public void someMethod(){
         Bar tender = new Bar();
         tender.getJohnnyRedLabel();
         tender.getJohnnyBlueLabel(); //this method is new in the Bar class
    }
}

"تجميع الوقت" الطبقة

package org.overlyusedclassnames;

/** 
 * @Since 1992
 * Changes: added blue and gold Johnny Walker labels
 */

public class Bar {
    public Drink getJohnnyRedLabel(){
         return new JohnyWalkerFactory.get(RedLabel.class);
    }

    public Drink getJohnnyBlackLabel(){
         return new JohnyWalkerFactory.get(BlackLabel.class);
    }

    public Drink getJohnnyGoldLabel(){
         return new JohnyWalkerFactory.get(GoldLabel.class);
    }

    public Drink getJohnnyBlueLabel(){
         return new JohnyWalkerFactory.get(BlueLabel.class);
    }

}

الآن تخيل عمر او قديم شريط جرة بار لاستبدال شريط الوقت المحدد:

"وقت تشغيل الوقت"

package org.overlyusedclassnames;

/** 
 * @Since 1909
 * Changes: added red and black Johnny Walker labels
 */

public class Bar {
    public Drink getJohnnyRedLabel(){
         return new JohnyWalkerFactory.get(RedLabel.class);
    }

    public Drink getJohnnyBlackLabel(){
         return new JohnyWalkerFactory.get(BlackLabel.class);
    }
}

هل هناك طريقة لتحديد الطريقة المفقودة دون تشغيلها والحصول على NoSuchMethodError?


عدم اعطاء رأي: هذا هو إعادة صياغة كبيرة خاصة بي سؤال ذي صلة, ، الذي هو إلهي. اخترت طرح سؤال جديد لأن إعادة الصياغة ستقدم إجابات 2 الحالية غير ذات صلة بالموضوع.

هل كانت مفيدة؟

المحلول

مدقق japi - المدقق توافق API / ABI للخلف لمكتبة Java:

japi-compliance-checker -lib NAME -old OLD.jar -new NEW.jar

enter image description here

Sigtest. - اختبار توقيع Oracle's Sigtest و API Tool

japitools. - اختبار التوافق بين Java Apis

japi-checker - مدقق التوافق مع جافا API للخلف الذي يعمل في المستوى الثنائي

revapi. - API تحليل وتغيير أداة تتبع

أو يدويا باستخدام JAVAP Decompiler:

Javap old.class> old.txt javap new.class> new.txt diff -rnau old.txt new.txt> change.txt

نصائح أخرى

مرحاض - يتحقق من مكتبات Java للتوافق الثنائي والمصدر مع الإصدارات القديمة:

Java -Jar Clirr-Core-0.6-uber.jar -o old.jar -n new.jar

revapi. يمكن القيام بهذه المهمة أيضا. من السهل دمجها في مبنيات Maven، وهي ليست حالك من الواضح، ولكن قد تكون ذات أهمية للآخرين.

يمكن أن تحقق أيضا مجموعات تعسفية من الجرار باستخدام وضعها المستقل.

japicmp. هي أداة أخرى للتحقق من التوافق الثنائي. وهي متوفرة كأداة سطر الأوامر المستقل أو كمسافة مافن.

هناك أداة باسم الحيوانات الشم التي تتيح لك استخراج توقيع ل API. ثم يمكن أن تحقق بشكل ثابت من أن مستخدمي عصا API للتوقيع، ويمكنهم التحقق منها قانونيا من أن مستحقات API لديها كل شيء ينفذ. أعتقد أن هذا من شأنه أن يحل مشكلتك بشكل جيد.

يمكنك تنزيل جرة ل Sniffer الحيوان من مستودع Codehaus Maven:http://repo1.maven.org/maven2/org/codehaus/mojo/animal-sniffer/

هل تحتاج إلى التحقق من فئة محددة أو أداة عامة لمقارنة الجرة؟ إذا كان هناك فئة واحدة، فما عليك سوى تحميل الفئة في محمل فئة مخصصة، تحقق من توقيع الأساليب باستخدام التفكير وهذا هو. إذا كنت في حاجة إليها لكثير من جرة / فصول، فسيكون هذا العمل كثيرا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top