2012-04-19 16 views
40

Javaクラスローダーがクラスをロードする順序を列挙しようとしています。 -verboseパラメータを使用すると、ロードするすべてのインターフェイス/クラスがリストされます。シリアライズ可能なインターフェイス、例外などのインターフェイスが含まれます。この出力を微調整してクラスにロードされるクラスのみを表示する方法はありますか定義されている?Javaの冗長なクラスローディング

答えて

46

私はあなたの最善の策は、次の操作を行うことです推測:それが終了する前に、あなたのmain方法が開始され、右後

  • 出力にいくつかの固定されたテキストを。
  • パイプ
  • 利用物事以下grepののようなファイルへの冗長出力は、メインメソッドから2つのタグの間にロードされたクラスを検索します。

同様の質問とここにいくつかの答えがあります:Is there a way to get which classes a ClassLoader has loaded?

あなたは-verbose:classを試してみましたか?

4

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