如何使用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编写相当容易)。