有谁知道如何以编程方式找出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