Identifier les IncompatibleClassChangeError potentielles à partir du bytecode
Soit une interface A exposant une méthode f et une classe B implémentant cette interface. On compile et ça marche. On ajoute une nouvelle méthode g à l'interface A. On recompile uniquement A. Le code est toujours fonctionnel tant qu'on ne fait pas appel à la méthode g sur une variable de type A contenant une instance de B. Dans le cas contraire, une IncompatibleClassChangeError est levée.
La manière habituelle pour détecter ce genre de problème est évidemment de recompiler tous les fichiers Java dépendant de ceux qu'on a modifiés, mais que faire lorsqu'on a que le bytecode (donc les fichiers *.class) sous la main ? Existe-t-il un outil permettant de faire cette vérification "statique" ? Le chargeur de classes du système inclut bien un bytecode verifier, mais il ne vérifie pas ce genre de chose (pas directement du moins ni donc exhaustivement).