问题描述
背景:我的主要目标是启动一个线程,为其设置一个类路径,然后在线程死后,我不希望该线程保留任何内容。是否可以在线程执行后重置类加载器,以使之后添加的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 (将#修改为@)