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