Я хочу декомпилировать программу Java и перекомпилировать производный (запутанный) источник. Я распаковал архив .jar и получил такую структуру каталогов:
com/
com/foo/A/
com/foo/A/A.class
com/foo/A/B.Class
com/foo/B/A.class
...
com/foo/A.class
com/foo/B.class
org/foo/Bar.class
...
Проблема в том, что между пакетами и классами возникают конфликты имен, что делает невозможным повторную компиляцию декомпилированных файлов классов. Декомпилированный класс будет выглядеть так:
package org.foo;
import com.foo.A; // <-- name collision error
class Bar {
...
}
Есть ли способ решить эти проблемы с именами без переименования файлов классов?
РЕДАКТИРОВАТЬ: Это не проблема декомпилятора, а вопрос о том, как можно иметь рабочий файл .jar с классами, которые нарушают соглашения об именах.
EDIT2: Хорошо, я думаю, на уровне байт-кода такое именование возможно, поэтому с помощью более умного декомпилятора (который автоматически переименовывает классы и исправляет их ссылки) эта проблема может быть решена.