Я хочу проверить двоичную совместимость между 2 JAR.
Следуя советам из этого ответа Я использовал jboss tattletale , но он может найти только пропущенные классы.
Как я могу найти, если отсутствуют методы? Возможно ли это вообще?
1011 * Е.Г. *
Класс "Зависит от" Foo зависит от Бара (как и многие другие работники среднего класса)
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 ответа будут совершенно не связаны с темой.