2012-04-19 69 views
40

我想列出Java類加載器加載我的類的順序。如果我使用-verbose參數,它會列出它加載的每一個接口/類,包括噸的接口,如Serializable,異常等。有沒有辦法來調整這個輸出,所以它只顯示哪些類加載在類中,我的主要方法是界定?Java詳細類加載

回答

46

我想最好的辦法是做到以下幾點:

  • 輸出一些固定的文本,一旦你main方法開始,右之前結束。
  • 詳細輸出到一個文件中像的grep
  • 使用的東西,找到了兩個標籤之間加載從main方法的類。

有一個類似的問題和一些答案在這裏:Is there a way to get which classes a ClassLoader has loaded?

你嘗試-verbose:class

4

下面是一個sed表達式,它將解析java -verbose:class的輸出以生成加載的類名稱及其jar文件對。您可以通過排序來獲取獨特的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