web-dev-qa-db-fra.com

Décompilation par lots de Java avec JD-GUI

Je cherche un programme pour décompiler par lots Java classes. J'ai trouvé JAD, mais il ne supportait pas certaines nouvelles fonctionnalités de Java, et l'avantage de ce programme est qu'il peut s'exécuter à partir de ligne de commande et générer automatiquement un fichier * .Java.

J'ai également trouvé JD-GUI. Il prend en charge la plupart des fonctionnalités de Java, mais l'inconvénient est qu'il ne peut pas effectuer de traitement par lots. Vous devez ouvrir le fichier de classe avec le programme et cliquer sur enregistrer.

Existe-t-il un moyen de faire en sorte que JD-GUI effectue un traitement par lots comme JAD?

32
MemoryLeak

La décompilation en ligne de commande pour JD-GUI est une fonctionnalité très demandée mais elle n'est pas encore implémentée. Vous pouvez peut-être utiliser la solution de contournement suivante en attendant:

  1. jar (ou Zip) toutes les classes que vous souhaitez décompiler ensemble.
  2. Lancez JD-GUI et ouvrez votre archive jar (Zip).
  3. Utilisez l'option de menu "Fichier" - "Enregistrer les sources JAR". Il décompilera toutes les classes de votre archive et enregistrera leurs sources dans un autre fichier Zip.

Je n'ai pas vu de bonnes alternatives JD-GUI open source avec un support en ligne de commande, malheureusement, donc je pense que ce qui précède est aussi bon que possible pour l'instant.

51
ChssPly76

Je pourrais recommander d'utiliser Jad en conjonction avec JadRetro - bien sûr, il ne peut pas faire produire Jad Java génériques mais la source décompilée (y compris pour Java 1.5+ classes) est fonctionnellement équivalent à l'original (et compilable en retour dans la plupart des cas).
Son utilisation est simple:

jadretro * .class
classe jad.

Remarques:
1. JadRetro pourrait être utilisé en mode batch comme ceci: jadretro ...
2. Si vous utilisez jad v1.5.8e (au lieu de la dernière v1.5.8g), l'option "-c" doit être passée à jadretro (sinon jad refusera de décompiler Java 1.5+ classes ).

3
ivmai

Il semble que vous puissiez lancer l'interface graphique avec un tas de bibliothèques à la fois en utilisant la ligne de commande, puis CTRL + ALT + s/CTRL + w chaque onglet pour enregistrer/fermer rapidement. Ce n'est pas automatisé mais tolérable lors de la décompilation d'une pile de dépendances. (Notez que le "^" est juste une astuce pour faire des commandes multi-lignes dans 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
Ryan

Fichier> Enregistrer toutes les sources enregistrera tous les fichiers dans le répertoire personnel.

1
Esther