一尘不染

查找从何处加载Java类

java

有谁知道如何以编程方式找出java类加载器实际从何处加载类?

我经常在大型项目中使用类路径,并且手动搜索并不是一个好的选择。我最近遇到了一个问题,其中类加载器正在加载不正确的类版本,因为它位于两个不同位置的类路径上。

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

编辑:如果类加载器由于版本不匹配(或其他原因)而实际上无法加载该类,该怎么办,在读取它之前我们是否能找出它试图读取的文件?


阅读 342

收藏
2020-03-01

共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
2020-03-01