web-dev-qa-db-ja.com

Java verbose class loading

Javaクラスローダーがクラスを読み込んでいる順序をリストしようとしています。-verboseパラメータは、ロード可能なすべてのインターフェイス/クラスを一覧表示します。Serializable、例外などの多くのインターフェイスを含みます。この出力を微調整する方法はありますか?

50
Bober02

あなたの最善の策は次のことをすることだと思います:

  • mainメソッドが開始し、終了する直前にいくつかの固定テキストを出力します。
  • verbose出力をファイルにパイプします
  • lessまたはgrepのようなものを使用して、2つの間にロードされたクラスを見つけます。 mainメソッドからのタグ。

同様の質問といくつかの回答があります: ClassLoaderが読み込んだクラスを取得する方法はありますか?

試しましたか -verbose:class

53
nwinkler

以下は、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
7