你如何确定一个类(或资源)是从哪里加载的?
我正在尝试确定一个类从哪里加载。是否有人知道以下信息:
- 该类来自哪个Jar文件?
- 哪个类加载器加载了该文件?
你如何确定一个类(或资源)是从哪里加载的?
我正在尝试确定一个类从哪里加载。是否有人知道以下信息:
Class
有一个实例方法getClassLoader()
,它返回一个引用,指向加载它所代表的类的类加载器。请注意,这可能返回null
。在此处查看:这里。String
(仅作为示例),您可以执行以下操作:ClassLoader loader = String.class.getClassLoader();
或者:
ClassLoader loader = "I'm a String".getClass().getClassLoader();
对于一个类,可以使用MyClass.class.getProtectionDomain().getCodeSource().getLocation()
来获取其位置。(实际上,可能会有一个null
的ProtectionDomain
或者没有CodeSource
。也可能抛出一个SecurityException
异常。)
我会使用-verbose:class
命令行选项来处理这个问题,将输出保存到文本文件中,然后使用grep(或者如果你是Windows系统则使用DOS find)来查看加载该类的详细信息。
null
。此外,类加载器通常从多个位置加载类和资源。 - Tom Hawtin - tackline