为了账号安全,请及时绑定邮箱和手机立即绑定

查找java类是从哪里加载的

查找java类是从哪里加载的

繁星coding 2019-07-02 16:05:33
查找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


查看完整回答
反对 回复 2019-07-02
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-07-02
?
浮云间

TA贡献1829条经验 获得超4个赞

这就是我们所使用的:

public static String getClassResource(Class<?> klass) {
  return klass.getClassLoader().getResource(
     klass.getName().replace('.', '/') + ".class").toString();}

这将取决于ClassLoader实现:getClass().getProtectionDomain().getCodeSource().getLocation()


查看完整回答
反对 回复 2019-07-02
  • 3 回答
  • 0 关注
  • 822 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信