Java 详细类加载

2022-01-16 00:00:00 jvm java classloader

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

I am trying to list the order in which the Java class loader is loading my classes. if I use -verbose parameter it will list every single interface/class it loads, including tons of interfaces such as Serializable, exceptions etc. Is there a way to tweak this output so it only shows which classes are loaded in the class my main method is defined?

推荐答案

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

I guess your best bet is to do the following:

  • 在您的 main 方法开始后和结束之前输出一些固定文本.
  • 将 verbose 输出通过管道传输到文件中
  • 使用 less 或 grep 之类的东西从 main 方法中查找加载在两个标签之间的类.
  • Output some fixed text once your main method starts and right before it ends.
  • Pipe the verbose output into a file
  • Use things like less or grep to find the classes loaded between the two tags from the main method.

这里有一个类似的问题和一些答案:有没有办法获取 ClassLoader 加载了哪些类?

There's a similar question and some answers here: Is there a way to get which classes a ClassLoader has loaded?

您尝试过 -verbose:class 吗?

相关文章