我想驗證2個JAR之間的二進制兼容性。如何在JAR中靜態識別缺少的方法(二進制兼容性)
按照answer的建議,我使用了jboss tattletale,但它只能找到缺失的類。
我怎樣才能找到是否有缺失的方法?它有可能嗎?
E.g.
「依賴 - 在」美孚取決於欄(像其他許多中產階級工人)類
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
?
免責聲明:這是我自己related question的重大的改寫,這是不可刪除。我選擇提出一個新的問題,因爲重新安排會使當前的2個答案與主題無關。
您可以對其他應該關閉的問題發表評論,並且超級用戶可以爲你關閉 – Yoni 2010-01-11 09:47:21
@Yoni - 已經做到了 – 2010-01-11 11:03:17
「沒有運行」==「靜態」(在問題標題中) – aponomarenko 2011-01-19 00:06:22