查找java类是从哪里加载的

查找java类是从哪里加载的

有谁知道如何通过编程找到java类加载器实际从哪里加载类?

我经常在大型项目上工作,在这些项目中类路径会变得非常长,而手动搜索实际上并不是一种选择。我最近有一个问题其中,类加载器加载一个不正确的类版本,因为它位于两个不同位置的类路径上。

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

编辑:如果类加载程序由于版本错配(或其他原因)而实际无法加载类,那么在读取类之前,我们是否可以找到它试图读取的文件呢?


繁星coding
浏览 823回答 3
3回答

一只甜甜圈

下面是一个例子: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

慕勒3428872

另一种查找类从何处加载的方法(不操作源)是使用以下选项启动Java VM:-verbose:class

浮云间

这就是我们所使用的:public&nbsp;static&nbsp;String&nbsp;getClassResource(Class<?>&nbsp;klass)&nbsp;{ &nbsp;&nbsp;return&nbsp;klass.getClassLoader().getResource( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;klass.getName().replace('.',&nbsp;'/')&nbsp;+&nbsp;".class").toString();}这将取决于ClassLoader实现:getClass().getProtectionDomain().getCodeSource().getLocation()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java