查找从哪里加载 java 类
2022-08-31 06:08:25
有谁知道如何以编程方式找出java类装入器实际加载类的位置?
我经常在大型项目上工作,其中类路径变得很长,手动搜索并不是一个真正的选择。我最近遇到了一个问题,即类装入器加载了不正确的类版本,因为它位于两个不同位置的类路径上。
那么,如何让类加载器告诉我实际的类文件来自磁盘上的位置呢?
编辑:如果类装入器实际上由于版本不匹配(或其他原因)而无法装入类,那么无论如何,我们是否可以在读取之前找出它尝试读取的文件?
有谁知道如何以编程方式找出java类装入器实际加载类的位置?
我经常在大型项目上工作,其中类路径变得很长,手动搜索并不是一个真正的选择。我最近遇到了一个问题,即类装入器加载了不正确的类版本,因为它位于两个不同位置的类路径上。
那么,如何让类加载器告诉我实际的类文件来自磁盘上的位置呢?
编辑:如果类装入器实际上由于版本不匹配(或其他原因)而无法装入类,那么无论如何,我们是否可以在读取之前找出它尝试读取的文件?
下面是一个示例:
package foo;
public class Test
{
public static void main(String[] args)
{
ClassLoader loader = Test.class.getClassLoader();
System.out.println(loader.getResource("foo/Test.class"));
}
}
这打印出来:
file:/C:/Users/Jon/Test/foo/Test.class
找出类的加载位置(不操作源代码)的另一种方法是使用以下选项启动 Java VM:-verbose:class