java如何重载一个jar包?高手指点啊!这个问题已经困扰很久了。
以下是我加载一个jar包的程序段,是通过URLClassLoader加载到当前线程的:
......
Method addURL = URLClassLoader.class.getDeclaredMethod("addURL", new Class[] { URL.class });
addURL.setAccessible(true);
addURL.invoke( Thread.currentThread().getContextClassLoader(),
new Object[] { new File ("D:\\workspace\\applicationproject\\mylib\\test1.jar").toURL() });
Class.forName("task.test1").newInstance();
.......
这个test1.jar是服务器在运行的时候我上传上去的,并执行了一次上面的程序,这样类就被加载进来了。
现在这个包里的类改过了,并且还是只有task.test1这个class ,基于JVM的类加载机制,当我重新
执行以上程序的时候,JVM认为task.test1这个类已经存在,所以它就不加载我刚才上传的改动过的task.test1了,
我需要我执行以上程序的时候这个类会
reload(重载),或者直接回收以前的那个类(这个好像很难做到)。
请问各位大侠,有没有什么好的办法,不管是自己写类加载器还是用开源工具包
如果能解决了这个问题,我就可以松一口气了,谢谢各位大侠,请指教,最好有现成代码让我参考以下,谢谢了!