21

javap ツールを使用して、jar 内のクラス ファイルのメソッドを一覧表示したいと考えています。jar 内のすべてのクラス ファイルのメソッドとメンバーを一覧表示するにはどうすればよいですか。今のところ、一度に 1 つのクラスだけを行うことができます。

私が言うなら、私は何かを期待しています

javap java.lang.*

java.lang パッケージ内のすべてのクラスのメソッドとメンバーを登録する必要があります。javap にそれができない場合、そのようなツールはありますか?

4

4 に答える 4

32
#!/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
于 2009-07-23T13:21:45.263 に答える
15

さらに簡単になる

JAR=<path to jarfile> \
javap -classpath $JAR $(jar -tf $JAR | grep "class$" | sed s/\.class$//)
于 2014-11-20T10:52:01.310 に答える
2

最初に jar ファイルを解凍します。これにより、パッケージごとに一連のディレクトリが生成されます。次に、ディレクトリごとに javap コマンドを適用します。

たとえば、Tomcat を使用すると、webapps\balancer にある catalina-balancer.jar ファイルを解凍してから、

javap -classpath org\apache\webapp\balancer ルール

を与える

「Rule.java」からコンパイル
インターフェイス org.apache.webapp.balancer.Rule{
    public 抽象ブール値の一致 (javax.servlet.http.HttpServletRequest);
    public abstract java.lang.String getRedirectUrl();
}

パッケージ内のすべてのクラス ファイルに対してこれを行う必要がある場合は、スクリプトまたはプログラムを記述してクラスパスをたどり、ファイル名から .class を削除して javap に渡す必要があります。

(perl/bash/java で書くのはかなり簡単です)。

于 2009-07-23T13:17:53.427 に答える