どうやっててjavapツールを使用してjarファイルにクラス構造を印刷していますか?
-
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で書くのはかなり簡単になります)。
所属していません StackOverflow