Как переименовать вещи с помощью BCEL? До сих пор, что я делаю, это пройти через каждый метод в классе и создать новую константу NameAndType в постоянном пуле, то я заменить старое NameAndType константы, что одинПереименование вещей
int nameRef = cpg.addNameAndType(newName, m.getSignature());
cpg.setConstant(m.getNameIndex(), cpg.getConstant(nameRef));
Это кажется, как она должна работать, но мой декомпилятор говорит, что после этого постоянный пул коррумпирован. Я что-то пропустил?
Спасибо :) Теперь мне просто нужно выяснить способ обновления всех ссылок на методы в других классах. – Contra
Вы можете пройти через каждое заявление invoke и изменить его имя метода. Скорее всего, новый метод будет добавлен в Constant Pool. Однако вам может потребоваться вручную очистить CP, чтобы удалить старое имя метода. –