Пакетная декомпиляция файлов Java с помощью JD-GUI

Я ищу программу для пакетной декомпиляции классов Java. Я нашел JAD, но он не поддерживал некоторые новые функции Java, а преимущество этой программы в том, что она может выполняться из командной строки и автоматически генерировать файл *.java.

Я также нашел JD-GUI. Он поддерживает большинство функций Java, но недостатком является то, что он не может выполнять пакетную обработку. Вам нужно открыть файл класса с программой и нажать сохранить.

Есть ли способ заставить JD-GUI выполнять пакетную обработку, как JAD?


person MemoryLeak    schedule 06.09.2009    source источник


Ответы (5)


Декомпиляция командной строки для JD-GUI — это очень востребованная функция, но она не реализована. все же. Возможно, вы можете использовать следующий обходной путь:

  1. jar (или zip) все классы, которые вы хотите декомпилировать вместе.
  2. Запустите JD-GUI и откройте архив jar (zip).
  3. Используйте пункт меню "Файл" - "Сохранить исходные файлы JAR". Он декомпилирует все классы из вашего архива и сохранит их исходники в другой zip-файл.

К сожалению, я не видел хороших альтернатив JD-GUI с открытым исходным кодом с поддержкой командной строки, поэтому я думаю, что на данный момент вышеизложенное настолько хорошо, насколько это возможно.

person ChssPly76    schedule 06.09.2009
comment
Я только что обнаружил оболочку CLI, которая использует JD — см. github.com/nviennot/jd-core. -java - person Rob W; 02.08.2013
comment
Этот тоже выглядит многообещающе (на самом деле это форк вышеупомянутого Роба В.), и он также предоставляет библиотеку; но я еще не тестировал его: github.com/kwart/jd-cmd - person ozeebee; 12.02.2014
comment
На домашней странице теперь есть декомпилятор перетаскивания. Вы знаете что это значит... ;) - person Alba Mendez; 21.02.2014
comment
У меня нет этой опции для сохранения источников JAR - person Mustafa; 15.12.2015

Я мог бы порекомендовать использовать Jad в сочетании с JadRetro — конечно, это не может заставить Jad создавать дженерики Java, но декомпилированный исходный код (в том числе для классов Java 1.5+) функционально эквивалентен исходному (и в большинстве случаев компилируется обратно).
Его использование простое:

jadretro *.class
jad .class

Примечания:
1. JadRetro можно использовать в пакетном режиме следующим образом: jadretro ...
2. Если вы используете jad v1.5.8e (вместо последней версии v1.5.8g), то "-c" option следует передать jadretro (иначе jad откажется декомпилировать классы Java 1.5+).

person ivmai    schedule 16.12.2009

Похоже, вы можете запустить графический интерфейс с целой кучей библиотек одновременно, используя командную строку, а затем 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
person Ryan    schedule 10.02.2014

File > Save all sources сохранит все файлы в домашнем каталоге.

person Esther    schedule 12.05.2018

JD-GUI имеет возможность пакетного экспорта файлов классов в файл .java, заархивированный в файл jar.

однако эта функция не управляется командной строкой, а щелкает мышью, это не стабильно и иногда зависает.

Вы можете использовать jd-cli ( https://github.com/kwart/jd-cli/releases/tag/jd-cli-1.2.0).

  1. подготовьте файл .jar (содержащий классы)
  2. ввод: jd-cli target.jar -od jar_result -g ALL

и вы получите заархивированный файл исходного кода Java.

person Siwei    schedule 17.03.2021