2012-04-19 67 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