到目前为止,我在自定义ClassLoader上看到的示例涉及URLClassLoader的子类化,并使用该特定实例在资源中加载类。
我徒劳地寻找替代SystemClassLoader的替代方法,以便可以向我的ClassLoader查询不在类路径中的类。
我尝试了Thread.currentThread().setContextClassLoader
,但似乎没有用。
可能吗
最佳答案
尽管这是一个古老的问题,但确实有一种方法可以替换系统ClassLoader。
但是,通过反射(reflection),您可能会得到比讨价还价更多的 yield 。
Field scl = ClassLoader.class.getDeclaredField("scl"); // Get system class loader
scl.setAccessible(true); // Set accessible
scl.set(null, new YourClassLoader()); // Update it to your class loader
这应该在Oracle JVM上有效。