java - 找到加载特定类的ClassLoader

标签 java classloader

有没有办法确定哪个ClassLoader加载特定的类?或者更具体地说,是从哪里加载特定类的?

我遇到了加载旧数据库驱动程序类的情况。我想找到加载旧驱动程序的文件。

我最初的方法是在 ClassLoader.loadClass(..) 方法上设置一个调试点,并在加载类后停止虚拟机以查看哪个类加载器正在加载它。不幸的是,loadClass 方法被调用得太频繁以至于很难在加载类的地方停下来。我将尝试设置一个断点过滤器。然而,还有另一个问题:由于 ClassLoader 体系结构,即使 ClassLoader 不负责加载,也会调用 loadClass。

一定有更好的方法来实现我想要的。您对在哪里寻找解决方案有什么想法或建议吗?

最佳答案

你如何启动你的程序?

将以下选项添加到命令行记录每个正在加载的类的位置。

-verbose:class

这些日志通常出现在系统输出中。但是根据日志记录的配置方式,您可能需要四处看看。

关于java - 找到加载特定类的ClassLoader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9721559/

相关文章:

Java 输入对话框工具提示和粘贴选项?

java - 再次执行操作之前的计时器

java - .persist() 在新线程的 Spring Roo 中不起作用

java - 如何在 linux 环境和 tomcat 中调试 jmv 堆栈与 java 应用程序崩溃 ramdonly?

jar - 如何在我的 map/reduce 作业中使用更新版本的 hadoop/lib jar?

java - 如何处理Java中的链接错误?

java - 使用 FileReader 的 java 中的这段代码有什么问题?

java - 由于类加载器,在 Tomcat Web 应用程序中实现单例模式时遇到问题

java - 如何配置 Web 应用程序的类路径

java - GroovyClassLoader - 将已解析的类添加到类路径