Пакетная декомпиляция файлов Java с помощью JD-GUI
Я ищу программу для пакетной декомпиляции Java-классов. Я нашел JAD, но он не поддерживал некоторые новые функции Java, и преимущество этой программы в том, что она может выполняться из командной строки и автоматически генерировать *.java файл.
Я также нашел JD-GUI. Он поддерживает большинство функций Java, но недостатком является то, что он не может выполнять пакетную обработку. Вам нужно открыть файл класса с программой и нажать "Сохранить".
Есть ли способ сделать JD-GUI для пакетной обработки, например JAD?
Ответы
Ответ 1
Декомпиляция командной строки для JD-GUI - это исправленная функция, но она еще не реализована. Возможно, вы можете использовать следующее обходное решение:
- jar (или zip) все классы, которые вы хотите декомпилировать вместе.
- Запустите JD-GUI и откройте архив jar (zip).
- Используйте параметр "Файл" - "Сохранить JAR Источники". Он декомпилирует все классы из вашего архива и сохранит их источники в другом zip файле.
Я не видел никаких хороших альтернатив JD-GUI с открытым исходным кодом с поддержкой командной строки, к сожалению, поэтому я считаю, что это так хорошо, как сейчас.
Ответ 2
Я мог бы рекомендовать использовать Jad в сочетании с JadRetro - конечно, он не может заставить Jad создавать java файлы, но декомпилировать source (в том числе для классов Java 1.5+) функционально эквивалентен оригиналу (и в большинстве случаев он компилируется).
Его использование прост:
jadretro *.class
jad.class
Примечания:
1. JadRetro можно использовать в пакетном режиме следующим образом: jadretro...
2. Если вы используете jad v1.5.8e (вместо последнего v1.5.8g), то параметр "-c" должен быть передан jadretro (иначе jad откажется от декомпилирования классов Java 1.5+).
Ответ 3
Похоже, вы можете сразу запустить графический интерфейс с помощью целой группы библиотек, используя командную строку, а затем CTRL + ALT + s/CTRL + w каждую вкладку, чтобы быстро сохранить/закрыть. Он не автоматизирован, но переносим при декомпиляции кучи зависимостей. (Обратите внимание, что "^" - всего лишь трюк для выполнения многострочных команд в Windows.)
"c:\jd-gui-0.3.6.windows\jd-gui.exe" ^
c:\my-libs\lib-a.jar ^
c:\my-libs\lib-b.jar ^
c:\my-libs\lib-c.jar ^
c:\my-libs\lib-d.jar ^
c:\my-libs\lib-e.jar