Wie benenne ich Dinge mit BCEL? Bis jetzt, was ich tue, ist in einer Klasse durch jede Methode gehen und eine neue NameAndType Konstante im Konstanten-Pool erstellen, dann ersetze ich die alte NameAndType konstant mit, dass manUmbenennen von Dingen
int nameRef = cpg.addNameAndType(newName, m.getSignature());
cpg.setConstant(m.getNameIndex(), cpg.getConstant(nameRef));
Dies scheint, wie es funktionieren soll, aber meine Decompiler sagt mir, dass der konstante Pool danach beschädigt ist. Vermisse ich einen Schritt oder etwas?
Vielen Dank :) Jetzt muss ich nur eine Möglichkeit finden, alle Methodenverweise in anderen Klassen zu aktualisieren – Contra
Sie können jede Invoke-Anweisung durchlaufen und ändern Sie ihren Methodennamen. Höchstwahrscheinlich wird die neue Methode zum Constant Pool hinzugefügt. Möglicherweise müssen Sie jedoch den CP manuell bereinigen, um den alten Methodennamen zu entfernen. –