我想使用javap工具列出jar中类文件的方法。我该怎么做才能列出jar中所有类文件的方法和成员。现在我能够一次只为一个班级做这件事。
我期待像我说的那样
javap java.lang.*
它应该在java.lang包中登记所有类的方法和成员。如果javap不具备此功能,是否有可用的工具?
答案 0 :(得分:27)
#!/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
答案 1 :(得分:11)
更容易
JAR=<path to jarfile> \
javap -classpath $JAR $(jar -tf $JAR | grep "class$" | sed s/\.class$//)
答案 2 :(得分:2)
首先解压缩jar文件,这将为每个包生成一系列目录,然后对每个目录应用javap命令。
因此,例如使用tomcat,您可以在webapps \ balancer中解压缩catalina-balancer.jar文件,然后使用
javap -classpath org\apache\webapp\balancer Rule
给出了
Compiled from "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编写相当容易)。