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$//)