如何使用javap工具在jar文件中打印类结构?

我想使用javap工具列出jar中类文件的方法。 我该怎么做才能列出jar中所有类文件的方法和成员。 现在我能够一次只为一个class级做这件事。

我期待像我说的那样

javap java.lang.* 

它应该在java.lang包中登记所有类的方法和成员。 如果javap不具备此function,是否有可用的工具?

 #!/bin/bash # Set the JAR name jar= # 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 

会更容易

 JAR= && \ javap -classpath $JAR $(jar -tf $JAR | grep "class$" | sed s/\.class$//) 

首先解压缩jar文件,这将为每个包生成一系列目录,然后对每个目录应用javap命令。

因此,例如使用tomcat,您可以在webapps \ balancer中解压缩catalina-balancer.jar文件,然后使用

  javap -classpath org \ apache \ webapp \ balancer规则 

这使

 编译自“Rule.java”
 interface org.apache.webapp.balancer.Rule {
     public abstract boolean matches(javax.servlet.http.HttpServletRequest);
     public abstract java.lang.String getRedirectUrl();
 } 

如果需要对包中的所有类文件执行此操作,则需要编写脚本或程序来遍历类路径并从文件名中删除.class并将其传递给javap。

(用perl / bash / java编写相当容易)。