descomprimir archivos java command-line javap

archivos - ¿Cómo imprimo las estructuras de clase en un archivo jar usando la herramienta javap?



descomprimir jar linux (3)

Primero descomprima el archivo jar, esto producirá una serie de directorios para cada paquete, luego aplique el comando javap por directorio.

Entonces, por ejemplo, con tomcat puede descomprimir el archivo catalina-balancecer.jar en webapps / balancer y luego usar

javap -classpath org/apache/webapp/balancer Rule

lo que da

Compiled from "Rule.java" interface org.apache.webapp.balancer.Rule{ public abstract boolean matches(javax.servlet.http.HttpServletRequest); public abstract java.lang.String getRedirectUrl(); }

Si necesita hacer esto para todos los archivos de clase en un paquete, tendrá que escribir un script o programa para recorrer el classpath y quitar .class de los nombres de archivo y pasarlo a javap.

(Sería bastante fácil escribir en perl / bash / java).

Quiero enumerar los métodos de los archivos de clase en el contenedor usando la herramienta javap. ¿Cómo lo hago para que enumere los métodos y los miembros de todos los archivos de clase en el contenedor? Ahora mismo puedo hacerlo solo para una clase a la vez.

Estoy esperando algo así como si digo

javap java.lang.*

debe incluir los métodos y miembros de todas las clases en el paquete java.lang. Si javap no es capaz de eso, ¿hay alguna de esas herramientas disponibles?


#!/bin/bash # Set the JAR name jar=<JAR NAME> # Loop through the classes (everything ending in .class) for class in $(jar -tf $jar | grep ''.class''); do # Replace /''s with .''s class=${class/////.}; # javap javap -classpath $jar ${class//.class/}; done


Aún más fácil sería

javap -classpath <JARNAME> $(jar -tf <JARNAME> | grep "class$" | sed s//.class$//)