ClassLoader

Posted chenpi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ClassLoader相关的知识,希望对你有一定的参考价值。

获取classpath下的资源文件

先调用当前线程的context加载器的getResourceAsStream方法去获取

没找到,在调用当前传入类的类加载器的getResourceAsStream方法获取

    public static InputStream getResourceAsStream(Class clazz, String name) {
        InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(name);
        if (in == null) {
            in = clazz.getResourceAsStream(name);
        }
        return in;
    }

递归获取加载某个类的类加载器链条信息

    private static String showClassLoaderHierarchy(ClassLoader cl, String delim, String tabText, int indent) {
        if (cl == null) {
            String s = "null classloader " + delim;
            ClassLoader ctxcl = Thread.currentThread().getContextClassLoader();
            s += "Context class loader=" + ctxcl + " hc=" + ctxcl.hashCode();
            return s;
        }
        StringBuilder s = new StringBuilder(); //"ClassLoader: ";
        for (int i = 0; i < indent; i++) {
            s.append(tabText);
        }
        s.append(cl).append(" hc=").append(cl.hashCode()).append(delim);
        ClassLoader parent = cl.getParent();
        return s.toString() + showClassLoaderHierarchy(parent, delim, tabText, indent + 1);
    }

 

以上是关于ClassLoader的主要内容,如果未能解决你的问题,请参考以下文章

Java运行时环境---ClassLoader类加载机制

Java基础之ClassLoader类加载器简介

类加载器(ClassLoader)

Java 虚拟机 - ClassLoader

(转)理解classloader

9ClassLoader源码分析