Comment puis-je imprimer les structures de classe dans un fichier jar en utilisant l'outil de javap?

StackOverflow https://stackoverflow.com/questions/1171549

  •  19-09-2019
  •  | 
  •  

Question

Je veux énumérer les méthodes des fichiers de classe dans le pot en utilisant l'outil de javap. Comment puis-je faire pour qu'il énumère les méthodes et les membres de tous les fichiers de classe dans le pot. En ce moment, je suis en mesure de le faire pour une seule classe à la fois.

Je me attends quelque chose comme si je dis

javap java.lang.*

il doit recourir aux méthodes et aux membres de toutes les classes de package java.lang. Si javap n'est pas capable de cela, y at-il de tels outils disponibles?

Était-ce utile?

La solution

#!/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

Autres conseils

Encore plus facile serait

JAR=<path to jarfile> \
javap -classpath $JAR $(jar -tf $JAR | grep "class$" | sed s/\.class$//)

Tout d'abord décompressez le fichier jar, cela donne une série de répertoires pour chaque paquet, puis appliquez la commande javap par répertoire.

Ainsi, par exemple avec tomcat, vous pouvez décompresser le fichier catalina-balancer.jar dans webapps \ équilibreur puis utilisez

javap -classpath org\apache\webapp\balancer Rule

qui donne

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 vous avez besoin de faire cela pour tous les fichiers de classe dans un package, vous devrez écrire un script ou un programme pour marcher sur le chemin de classe et dépouiller les .class des noms de fichiers et le transmettre à javap.

(Il serait assez facile d'écrire en Perl / bash / java).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top