有没有办法确定哪个ClassLoader加载特定的类?或者更具体地说,是从哪里加载特定类的?
我遇到了加载旧数据库驱动程序类的情况。我想找到加载旧驱动程序的文件。
我最初的方法是在 ClassLoader.loadClass(..) 方法上设置一个调试点,并在加载类后停止虚拟机以查看哪个类加载器正在加载它。不幸的是,loadClass 方法被调用得太频繁以至于很难在加载类的地方停下来。我将尝试设置一个断点过滤器。然而,还有另一个问题:由于 ClassLoader 体系结构,即使 ClassLoader 不负责加载,也会调用 loadClass。
一定有更好的方法来实现我想要的。您对在哪里寻找解决方案有什么想法或建议吗?
最佳答案
你如何启动你的程序?
将以下选项添加到命令行记录每个正在加载的类的位置。
-verbose:class
这些日志通常出现在系统输出中。但是根据日志记录的配置方式,您可能需要四处看看。
关于java - 找到加载特定类的ClassLoader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9721559/