到目前为止,我在自定义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上有效。

07-24 15:58