查找java类是从哪里加载的有谁知道如何通过编程找到java类加载器实际从哪里加载类?我经常在大型项目上工作,在这些项目中类路径会变得非常长,而手动搜索实际上并不是一种选择。我最近有一个问题其中,类加载器加载一个不正确的类版本,因为它位于两个不同位置的类路径上。那么,如何让类加载程序告诉我实际的类文件来自于磁盘上的哪个位置呢?编辑:如果类加载程序由于版本错配(或其他原因)而实际无法加载类,那么在读取类之前,我们是否可以找到它试图读取的文件呢?
3 回答
一只甜甜圈
TA贡献1836条经验 获得超5个赞
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
浮云间
TA贡献1829条经验 获得超4个赞
public static String getClassResource(Class<?> klass) { return klass.getClassLoader().getResource( klass.getName().replace('.', '/') + ".class").toString();}
getClass().getProtectionDomain().getCodeSource().getLocation()
添加回答
举报
0/150
提交
取消