是否可以将jar / package添加到类路径,然后在使用后将其删除? 在运行时

问题描述

背景:我的主要目标是启动一个线程,为其设置一个类路径,然后在线程死后,我不希望该线程保留任何内容。是否可以在线程执行后重置类加载器,以使之后添加的URL包不再持久?

我一直在单独的线程中运行以下代码

    public static void addURL(URL url) throws Exception {
        urlclassloader classLoader
        = (urlclassloader) Thread.currentThread().getContextClassLoader();
        Class clazz= urlclassloader.class;

        // Use reflection
        Method method= clazz.getDeclaredMethod("addURL",new Class[] { URL.class });
        method.setAccessible(true);
        method.invoke(classLoader,new Object[] { url });
    }

然后为添加的类运行一个名字:

try {
    Class.forName("com.mypackage.myclass",false,Thread.currentThread().getContextClassLoader());
} catch (ClassNotFoundException e) {
    e.printstacktrace();
}

但是,在线程退出之后,如果我重新运行上面的forName(),我期望在线程之外有一个classnotfoundexception,但是它不会出错。有没有办法从父线程的上下文类加载器中删除程序包?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...