如何打印的阶级结构中使用的javap工具jar文件?(How do I print the clas

2019-06-26 15:01发布

我想列出的类文件中使用的jar的javap的工具的方法。 我该怎么做,以便它列出了罐子的方法和所有的类文件的成员。 现在我可以在同一时间做的只是一个类。

我期待像如果我说

javap java.lang.*

它应该争取所有的类在java.lang包的方法和成员。 如果javap的不能够说,有没有这样的工具可用?

Answer 1:

#!/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


Answer 2:

更容易将

JAR=<path to jarfile> \
javap -classpath $JAR $(jar -tf $JAR | grep "class$" | sed s/\.class$//)


Answer 3:

首先解压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写)。



文章来源: How do I print the class structures in a jar file using the javap tool?