Im Allgemeinen wird ein Code (der Client-Code) mit einem anderen (dem API-Code) verknüpft. Java-Verlinkung wird typischerweise zwischen .java & .class zur Kompilierungszeit oder zwischen .class & .class zur Laufzeit verifiziert. Im letzteren Fall wird jedoch überprüft, ob und wann schlechte Referenzen auftreten (d. H., Es ist faul).Wie kann ich die Verknüpfung zwischen kompiliertem Java-Code überprüfen?
Gibt es eine Möglichkeit, die Verifizierung von alle Links zwischen dem Client-Code und dem API-Code auf einmal mit kompiliertem Code zu erzwingen? Der Zweck wäre, zu verifizieren, dass der Client-Code mit der angegebenen Version der API funktioniert - obwohl sie gegen eine andere kompiliert wurde.
(Natürlich ein Weg wäre, gegen die API zu dekompilieren und neu kompilieren, aber gibt es eine direktere Methode?)
Leistung ist nicht unbedingt ein Hauptproblem, da das Ergebnis in Erinnerung bleiben kann. Auch in einigen Situationen wird die Menge an Code nicht unbedingt groß sein. –
In Ordnung, gut. Sie könnten dann eine Bytecode-Engineering-Bibliothek wie ASM (siehe die Verwendung von CheckClassAdapter) oder BCEL (die den JustIce-Verifier enthält) verwenden, um die Verifizierung durchzuführen, falls sie ausreichend sind, oder sie bei Bedarf zu erweitern. Ich bin mir nicht sicher, ob Javassist eine ähnliche Funktion hat. –