2009-09-06 24 views
31

Estoy buscando un programa para descompilar por lotes las clases de Java. Encontré JAD, pero no admitía algunas características nuevas de Java, y el beneficio de este programa es que puede ejecutarse desde la línea de comandos y generar un archivo * .java automáticamente.Descompilación por lotes de archivos Java con JD-GUI

También encontré JD-GUI. Es compatible con la mayoría de las características de Java, pero el inconveniente es que no puede hacer el procesamiento por lotes. Debe abrir el archivo de clase con el programa y hacer clic en guardar.

¿Hay alguna manera de hacer que JD-GUI haga un procesamiento por lotes como JAD?

Respuesta

48

La descompilación de la línea de comandos para JD-GUI es una característica highly requested pero aún no está implementada. Quizás pueda utilizar la siguiente solución mientras tanto:

  1. jar (o zip) todas las clases que desee descompilar juntas.
  2. Inicie JD-GUI y abra su archivo jar (zip).
  3. Utilice la opción de menú "Archivo" - "Guardar fuentes JAR". Descompilará todas las clases de su archivo y guardará sus fuentes en otro archivo zip.

No he visto ninguna buena alternativa de código abierto JD-GUI con soporte de línea de comandos, desafortunadamente, así que creo que lo anterior es lo mejor posible por ahora.

+10

Acabo de descubrir un envoltorio CLI que utiliza JD - ver https://github.com/nviennot/ jd-core-java –

+1

Este también parece prometedor (en realidad es una bifurcación del ya mencionado por Rob W) y proporciona una biblioteca también; pero aún no lo he probado: https://github.com/kwart/jd-cmd – ozeebee

+0

La página de inicio ahora tiene un descompilador de arrastrar y soltar. Sabes lo que eso significa ...;) –

3

Podría recomendar el uso de Jad en conjunción con JadRetro - por supuesto, no puede hacer que Jad produzca java generics pero la fuente descompilada (incluidas las clases Java 1.5+) es funcionalmente equivalente a la original (y compilable de nuevo en la mayoría casos).
Su uso es sencillo:

JadRetro * .class
jad .class

Notas: 1.
JadRetro podría ser utilizado en modo batch como esto: JadRetro ...
2. Si están usando jad v1.5.8e (en lugar de la última v1.5.8g), entonces la opción "-c" debe pasarse a jadretro (de lo contrario, jad se negará a descompilar las clases Java 1.5+).

1

Parece que puede iniciar la GUI con un montón de libs a la vez utilizando la línea de comandos y luego presionar CTRL + ALT + s/CTRL + w para guardar/cerrar rápidamente. No es automatizado, pero es tolerable cuando descompila una pila de dependencias. (Tenga en cuenta que el "^" es sólo un truco para hacer de varias líneas comandos en 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 
Cuestiones relacionadas