如何打印的阶级结构中使用的javap工具jar文件?
-
19-09-2019 - |
题
我想列出的类文件中使用的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(); }
如果您需要在一个包中的所有类文件,你需要编写一个脚本或程序走的类路径和文件名剥离的.class并将它传递给javap的。这样做
(这将是相当容易在Perl /庆典/ java写)。
不隶属于 StackOverflow