我想列出的类文件中使用的jar的javap的工具的方法。 我该怎么做,以便它列出了罐子的方法和所有的类文件的成员。 现在我可以在同一时间做的只是一个类。
我期待像如果我说
javap java.lang.*
它应该争取所有的类在java.lang包的方法和成员。 如果javap的不能够说,有没有这样的工具可用?
我想列出的类文件中使用的jar的javap的工具的方法。 我该怎么做,以便它列出了罐子的方法和所有的类文件的成员。 现在我可以在同一时间做的只是一个类。
我期待像如果我说
javap java.lang.*
它应该争取所有的类在java.lang包的方法和成员。 如果javap的不能够说,有没有这样的工具可用?
#!/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
更容易将
JAR=<path to jarfile> \
javap -classpath $JAR $(jar -tf $JAR | grep "class$" | sed s/\.class$//)
首先解压jar文件,这将产生一系列目录为每个包,然后应用每个目录javap的命令。
因此,例如使用Tomcat,你可以在解压的webapps \平衡器卡特琳娜 - 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(); }
如果你需要在一个包中的所有类文件做到这一点,你需要编写一个脚本或程序走的classpath和剥离从文件名中的.class并把它传递给javap的。
(这将是很容易在Perl /庆典/ java写)。