如果引发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 但没有打印出来。 加载了类(我检查了调试),但没有打印任何内容。
我在做什么错了?