Как декомпилировать java-классы, содержащие Synthetic классы?
Всем приятного времени суток!
Хочу разобраться в исходниках некоторого продукта написанного на Java6.
У меня есть все необходимые .jar файлы данного приложения.
При декомпиляции их с помощью JD-GUI, некоторые вызовы декомпилируются как access$XXX. Хотя интуитивно можно догадаться какой именно метод вызывается, но это скорее исключение из правил.
При декомпиляции с помощью Fernflower, те классы, в которых JD-GUI отображал access$XXX, вообще ничего не содержат(файл с названием класса пуст).
Есть ли какие-нибудь автоматизированные методы декомпляции sythetic классов?
Хочется все классы подгрузить в IDE (Eclipse или NetBeans) и иметь возможность перекомпилировать отдельные классы (jar файлы).
ПС. Возможно, где-то путаюсь в терминологии, я в этом деле еще новичок =)
Потому что при компиляции исходников в байткод информации о классе сохраняется не полностью.
Именя класса, методы и члены классы сохраняются, а вот локальные переменные и аргументы методов нет. Подобная запись access$XXX похожа на работу с внутренними или вложенными классами, предполагаю декомпилятор не в силах восстановить данную инфу.
Да вы правы, оказалось описание Inner классов(или какая-то информация с ними связанная) хранится не в файле данного класса, а в файле classname$N.class. И видимо декомпиляторы не ищут информацию о иннерах в этих файлах и оставляют в декомпилированном исходнике только ссылку(access@XXX).
Спасибо за ответ!