Grupowa dekompilacja plików Java za pomocą JD-GUI

Szukam programu do dekompilacji klas Java. Znalazłem JAD, ale nie obsługuje niektórych nowych funkcji Javy, a zaletą tego programu jest to, że może on wykonywać z linii poleceń i generować *.plik java automatycznie.

Znalazłem też JD-GUI. Obsługuje większość funkcji Javy, ale wadą jest to, że nie może wykonywać przetwarzania wsadowego. Musisz otworzyć plik klasy za pomocą programu i kliknąć Zapisz.

Czy jest sposób, aby JD-GUI robił przetwarzanie wsadowe jak JAD?

Author: 4castle, 2009-09-06

4 answers

Dekompilacja wiersza poleceń dla JD-GUI jest wysoce wymaganą funkcją , ale nie jest jeszcze zaimplementowana. Być może w międzyczasie możesz skorzystać z następującego obejścia:

  1. jar (lub zip) wszystkie klasy, które chcesz zdekompilować razem.
  2. Uruchom JD-GUI i otwórz archiwum jar (zip).
  3. użyj opcji menu "Plik" - "Zapisz źródła JAR". Spowoduje to dekompilację wszystkich klas z twojego archiwum i zapisanie ich źródeł do innego pliku zip.

Nie widziałem żadnych dobre open source JD-GUI alternatywy z obsługą wiersza poleceń, niestety, więc myślę, że powyżej jest tak dobre, jak to się robi na razie.

 49
Author: ChssPly76,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-06 01:23:43

Mógłbym polecić używanie Jad w połączeniu z JadRetro - oczywiście nie może to sprawić, że Jad będzie wytwarzał generyki Javy, ale dekompilowane źródło (w tym dla klas Java 1.5+) jest funkcjonalnie równoważne oryginałowi (i w większości przypadków można je kompilować z powrotem).
Jego użycie jest proste:

Jadretro*.klasa
jad .klasa

Uwagi:
1. JadRetro może być używane w trybie wsadowym w następujący sposób: jadretro ...
2. Jeśli używasz jad v1.5.8 e (zamiast najnowszej v1. 5. 8 g) to opcja "- c " powinna zostać przekazana do jadretro (w przeciwnym razie jad odmówi dekompilacji klas Java 1.5+).

 3
Author: ivmai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-09 18:34:06

Wygląda na to, że możesz uruchomić GUI z całą masą libów na raz za pomocą linii poleceń, a następnie CTRL + ALT + S/CTRL+w każdej karcie, aby szybko zapisać / zamknąć. Nie jest to zautomatyzowane, ale tolerowane podczas dekompilacji stosu zależności. (Zauważ, że " ^ " to tylko sztuczka do wykonywania poleceń wielowierszowych w systemie 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
 1
Author: Ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-10 20:12:42

File > Save all sources zapisze wszystkie pliki w katalogu domowym.

 0
Author: Esther,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-12 08:17:10