到目前为止,我看到的自定义 ClassLoader 示例涉及子类化 URLClassLoader,并使用该特定实例加载资源中的类。
我曾尝试寻找替换 SystemClassLoader 的替代方法,以便可以为不在类路径中的类查询我的 ClassLoader,但没有成功。
我尝试了 Thread.currentThread().setContextClassLoader
,但它似乎不起作用。
有可能吗?
最佳答案
虽然是个老问题,但是确实有办法替代系统ClassLoader。 然而,通过反射(reflection),您可能会得到比讨价还价更多的东西。
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。
关于java - 包含 Jar 的 Jar 中的类的替换系统类加载器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5380275/