2 つの JAR 間のバイナリ互換性を確認したい。
この回答の提案に従って、 jboss tattletaleを使用しましたが、見つからないクラスしか見つかりません。
不足しているメソッドがあるかどうかを確認するにはどうすればよいですか? それはまったく可能ですか?
例えば
"Depends - on" クラスFoo は Bar に依存します (他の多くの中産階級の労働者と同様)
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);
}
}
ここで、古いBar jar がコンパイルされたタイム バーを誤って置き換えていると想像してください。
「ランタイム」クラス
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 つの回答がトピックとはまったく関係のないものになるため、新しい質問をすることにしました。