Java:找出*为什么*加载类

用户66237:

我目前遇到的问题是,我有一个(部分)程序试图加载一个类,但由于找不到该类而失败。查看堆栈跟踪,我看不到VM 为何首先尝试加载此特定类的任何特定原因有什么工具可以让我弄清楚为什么要加载特定的类?

提示:我已经在JVM尝试通过代理加载类的确切位置获得了堆栈跟踪。但是,堆栈跟踪不包含行号。因此,我只知道哪个方法触发类的加载,而不知道哪个语句。然后,仅知道该语句可能还不够。单个语句可能导致以多种方式加载类,因为有时VM需要加载类的可传递闭包的一部分。

kdgregory:

使用-XX:+TraceClassLoading-XX:+TraceClassResolution标志运行程序这将创建很多如下所示的输出:

[Loaded com.kdgregory.example.memory.PermgenExhaustion$MyClassLoader from file:/home/kgregory/Workspace/Website/programming/examples/bin/]
RESOLVE com.kdgregory.example.memory.PermgenExhaustion$MyClassLoader java.net.URLClassLoader
RESOLVE java.net.URLClassLoader java.lang.Class URLClassLoader.java:188

您需要跟踪特定类的RESOLVE消息链。或更可能的是,当您的程序尝试加载该类时,您会看到一个错误,首先是加载该类的类的解析消息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java类加载方式,如何揣摩出/时/为什么一个类加载?

为什么从类和类加载器加载文件的结果不一致

为什么此lambda函数在错误的类加载器中启动类加载?

什么时候加载Java类?

为什么无法从JAR文件加载主类清单属性?

Java中的静态嵌套类,为什么?

什么加载Java系统类加载器?

Java:为什么需要包装器类?

为什么Java找不到主类?

什么是Java中的隔离类加载器?

在Java中,为什么异常类在必要之前必须可用于类加载器?

为什么我们需要Java中的用户定义的类加载器

为什么Jaca类中的@Value无法在application.properties java springboot中加载属性

Java readObject / writeObject可以保存/加载超类,那么为什么需要read / writeExternal?

为什么在Java中加载类时委托

在Java中,为什么类“数组”是复数?

Java 8:为什么Metaspace的大小会增加,但加载的类数却保持不变?

C ++动态加载类:为什么需要“销毁”功能?

为什么反射不想加载我的测试类?

为什么我无法从已加载的Java类中检测注释?

为什么Dart无法在下面的代码中找出类实例变量

为什么Java类加载器执行“静态”内容,例如Class.forName

学习Java类并陷入尝试找出为什么我的代码无法返回适当值集的问题

为什么PowerShell类不加载管理单元

为什么存储库类会调用静态加载方法?

为什么引用静态final字段不会触发类加载?

在页面末尾加载Java脚本。为什么?

为什么javafxpackager-无法加载主类?

为什么我会收到任何 Java 代码的“错误:无法找到或加载主类”?