【发布时间】:2012-11-11 08:54:35
【问题描述】:
我希望系统类加载器接管我的应用程序的类加载。所以,如果我运行我的程序,
java -Djava.system.class.loader=MyClassLoader Main
我希望 Main 由 MyClassLoader 加载,以便我可以控制应用程序中的类加载。但这不会发生。 Main 仍由默认系统类加载器 (sun.misc.Launcher$AppClassLoader) 加载,Main 引用的其他类也是如此。但是,对 getSystemClassLoader() 的调用会返回 MyClassLoader 的一个实例。
这有什么用?由我的自定义系统类加载器加载 Main 是否有意义?如何控制我的应用程序的类加载?谁使用 getSystemClassLoader() 值?
【问题讨论】:
-
有些东西必须加载你的类加载器......那就是系统类加载器(它神奇地位于 JVM 内部)。
-
你是如何实现你的类加载器的?您可能会委托给父母吗?
-
好的,所以你没有从头开始编写它,但它仍然是你的类。您必须首先反驳这个假设:您的类加载器正在被调用,但它委托给父类加载器。
-
您能提供一个最小的工作示例吗?
-
请贴出你的ClassLoader的代码
标签: java classloader