Java自定义类加载器行为

时间:2019-04-03 14:02:31

标签: java classloader

如果引发ClassNotFoundException,我需要自定义现有应用程序的类加载器以更改其行为。 因此,我挖了google,建立了我的自定义类加载器,该类加载器现在在调用函数时仅打印出一些内容,并构建了一个示例应用程序对其进行测试。 在运行该应用程序之前,我设置了java.system.class.loader属性,以告知JVM使用我的自定义类加载器。

测试应用是一个具有main方法的类,该方法可以创建3个不同类的3个实例。

奇怪的是,我在输出中找不到对这3个实例的任何引用,因为这些类是使用标准类加载器而不是我的类加载的。

自定义类加载器取自Make JVM use My Own Class Loader

这是测试应用程序:

public class Main {
    public static void main(String args[] ) {
        try {
            Map <String,String> h = new HashMap<String,String>();
            Class1 c1 = new Class1();
            Class2 c2  = new Class2();            
            Class3 c3  = new Class3();            
            //  tmp = (char) System.in.read();
        } catch(Exception e) {
            System.err.println(e);
            e.printStackTrace(System.err);
        }
    }
}

在标准输出后: MyClassLoader:正在加载mater.common.test.Main 我期望其他3行像: MyClassLoader:正在加载mater.common.test.Class1 但没有打印出来。 加载了类(我检查了调试),但没有打印任何内容。

我在做什么错了?

0 个答案:

没有答案