我想列出的类文件中使用的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写)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top