El post que buscas se encuentra eliminado, pero este también te puede interesar

Cómo descompilar .class desde línea de comandos

Anuncios

Una clase java no puede visualizarse desde línea de comandos como si fuera un archivo de texto, es decir, con comandos como cat,less, more, etc. Para poder ver el contenido de forma legible hay que descompilar previamente la clase:

$ file foo.class
foo.class: java class file


Tanto JAVA de Oracle como OpenJDK cuentan con una herramienta llamada “javap” que permite descompilar una o varias classes:

DESCRIPTION

The javap command disassembles one or more class files. Its output depends on the options used. If no options are used, javap prints out the package, protected, and public fields and methods of the classes passed to it. javap prints its output to stdout.


Por ejemplo, para descompilar la clase “foo” que veíamos anteriormente podemos hacerlo del siguiente modo. Primero especificamos la ruta en la que se encuentra la clase y después el nombre:

$ javap -classpath . -c foo

Hay otros parámetros disponibles como por ejemplo mostrar los números de línea, información protegida, tablas de variables locales, información de sistema, etc:

$ javap -help
Usage: javap
where possible options include:
-help --help -? Print this usage message
-version Version information
-v -verbose Print additional information
-l Print line number and local variable tables
-public Show only public classes and members
-protected Show protected/public classes and members
-package Show package/protected/public classes
and members (default)
-p -private Show all classes and members
-c Disassemble the code
-s Print internal type signatures
-sysinfo Show system info (path, size, date, MD5 hash)
of class being processed
-constants Show static final constants
-classpath Specify where to find user class files
-bootclasspath Override location of bootstrap class files

1 comentario - Cómo descompilar .class desde línea de comandos

@amulet_fortune +1
gracias por la info, me gustaba más el avatar del caminador ASCII que tenías