查找从哪里加载 java 类

2022-08-31 06:08:25

有谁知道如何以编程方式找出java类装入器实际加载类的位置?

我经常在大型项目上工作,其中类路径变得很长,手动搜索并不是一个真正的选择。我最近遇到了一个问题,即类装入器加载了不正确的类版本,因为它位于两个不同位置的类路径上。

那么,如何让类加载器告诉我实际的类文件来自磁盘上的位置呢?

编辑:如果类装入器实际上由于版本不匹配(或其他原因)而无法装入类,那么无论如何,我们是否可以在读取之前找出它尝试读取的文件?


答案 1

下面是一个示例:

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

答案 2

找出类的加载位置(不操作源代码)的另一种方法是使用以下选项启动 Java VM:-verbose:class


推荐