我需要从xml配置文件里面读取,需要执行的类名,然后动态加载该类,执行特定方法
while (ReadFromXml)
{
     Class c = Class.forName("Process");
     Interface interface1 = (Interface)c.NewIntance();
     interface1.MyMothed();
}主程序是7*24不间断执行的我的问题是
我可能会在主程序运行一段时间后,新建一个执行类ProcessNew,然后我会吧该类的jar包,拷贝到java的classpath路径下面,再通过配置文件进行配置
这样的话,我不需要对主程序进行任何修改,就可以实现新的模块,但问题是,以上的步骤处理完之后,我必须把主程序重新启动,主程序才能找到ProcessNew,否则Class.forName("ProcessNew")无效,有没有方法,使主程序不需重启就动态加载成功

解决方案 »

  1.   

    但问题是,以上的步骤处理完之后,我必须把主程序重新启动,主程序才能找到ProcessNew,否则Class.forName("ProcessNew")无效
    ------
    不可能吧,我觉的Class.forName(str)。你这里的str是从XML中读出来的,为什么要重起?
    ReadFromXml的时候,要是XML不在,把线程挂起,所以你覆盖XML文件的时候先删除再拷贝。我没实验过 ,不过我觉的不用重起。
      

  2.   

    动态加载一定是要自定义自己的ClassLoader, 你可以继承自URLClassLoader
    另外动态加载的类是不能放在classpath中,否则java会要求父加载器来加载该类,不会依据你的想法达到动态加载目的的
      

  3.   

    在tomcat autodeploy设置为true的应用下,或者在weblogic下redeploy一下应用都是可以不用重启应用服务器的,嘿嘿...
      

  4.   

    ok,已经解决了,用了自定义的ClassLoader