Java详细类加载
我试图列出Java类加载器加载我的类的顺序。如果我使用Java详细类加载,java,jvm,classloader,Java,Jvm,Classloader,我试图列出Java类加载器加载我的类的顺序。如果我使用-verbose参数,它将列出它加载的每个接口/类,包括大量的接口,如可序列化、异常等。是否有办法调整此输出,使其仅显示在我定义的主要方法的类中加载的类?我想您最好的选择是执行以下操作: 一旦main方法启动并在结束之前输出一些固定文本 通过管道将详细输出传输到文件中 使用less或grep之类的方法来查找从main方法加载到两个标记之间的类 这里有一个类似的问题和一些答案: 您是否尝试过-verbose:class?下面是一个sed表达
-verbose
参数,它将列出它加载的每个接口/类,包括大量的接口,如可序列化、异常等。是否有办法调整此输出,使其仅显示在我定义的主要方法的类中加载的类?我想您最好的选择是执行以下操作:
- 一旦
方法启动并在结束之前输出一些固定文本main
- 通过管道将详细输出传输到文件中
- 使用less或grep之类的方法来查找从main方法加载到两个标记之间的类
您是否尝试过
-verbose:class
?下面是一个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