70

Java クラス・ローダーがクラスをロードする順序をリストしようとしています。パラメーターを使用-verboseすると、Serializable、例外などの多数のインターフェースを含む、ロードするすべてのインターフェース/クラスがリストされます。この出力を微調整して、メインメソッドが定義されているクラスにロードされているクラスのみを表示する方法はありますか? ?

4

2 に答える 2

72

あなたの最善の策は、次のことを行うことだと思います。

  • メソッドが開始されたら、mainメソッドが終了する直前に固定テキストを出力します。
  • 詳細出力をファイルにパイプする
  • lessgrepなどを使用して、main メソッドの 2 つのタグの間にロードされたクラスを見つけます。

同様の質問といくつかの回答がここにあります: ClassLoader がロードしたクラスを取得する方法はありますか?

試しました-verbose:classか?

于 2012-04-19T14:33:41.947 に答える
14

これは、 java -verbose:class の出力を解析して、ロードされたクラス名とその jar ファイルのペアを生成する sed 式です。さらに並べ替えをパイプ処理して、一意の jar ファイルを取得できます。例えば、

java -verbose:class -version 2>/dev/null |
  sed -ne 's/\[Loaded \(.\+\) from \(.\+\)\]/\2/p' | 
  sort -u

出力

/usr/local/jdk1.7.0_67/jre/lib/rt.jar
于 2017-03-24T22:57:40.730 に答える