Пакетная декомпиляция файлов 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