java - 包含 Jar 的 Jar 中的类的替换系统类加载器

标签 java jar classloader

到目前为止,我看到的自定义 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/

相关文章:

java - 在应用程序类与静态类中存储全局对象

java - 如何确定加载类的绝对路径(如果有)?

java - 如何在WebSphere中创建共享库来共享jar文件

java - 如何启动jboss 7.1.1服务器并在jboss 7.1.1中部署项目

java - 是否可以通过客户端漏洞查看 HttpSession 属性?

java - 如何在java程序中运行和使用.jar程序

jar - 智能 IDEA。生成 javadoc 作为 jar 存档

java - 如何确保通过套接字流接收到整个文件?

Java 泛型和转换为原始类型

java - 使用 JAR 1.6 打包仅限 Java 1.7+ 的类