Java详细类加载

问题描述 投票:50回答:2

我试图列出Java类加载器加载我的类的顺序。如果我使用-verbose参数,它将列出它加载的每个接口/类,包括大量的接口,如Serializable,异常等。有没有办法调整这个输出所以它只显示在类中加载哪些类我的主方法是界定?

java jvm classloader
2个回答
53
投票

我想你最好的办法是做以下事情:

  • 一旦你的main方法开始并且在它结束之前输出一些固定文本。
  • 将详细输出传递到文件中
  • 使用less或grep之类的东西来查找main方法中两个标记之间加载的类。

这里有一个类似的问题和一些答案:Is there a way to get which classes a ClassLoader has loaded?

你尝试过-verbose:class吗?


7
投票

这是一个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
© www.soinside.com 2019 - 2024. All rights reserved.