どうやっててjavapツールを使用してjarファイルにクラス構造を印刷していますか?

StackOverflow https://stackoverflow.com/questions/1171549

  •  19-09-2019
  •  | 
  •  

質問

私はてjavapツールを使用してjarファイル内のクラスファイルのメソッドをリストします。それは方法やjarファイル内のすべてのクラスファイルのメンバーを示していますように、私はそれをどのように行うのですか。今、私は一度にただ一つのクラスのためにそれを行うことができています。

私は

と言うかのように

私は何かを期待しています

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で、たとえばあなたがWebアプリケーション\バランサでカタリナ-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の/ bashの/ Javaで書くのはかなり簡単になります)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top