我需要从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")无效,有没有方法,使主程序不需重启就动态加载成功
while (ReadFromXml)
{
Class c = Class.forName("Process");
Interface interface1 = (Interface)c.NewIntance();
interface1.MyMothed();
}主程序是7*24不间断执行的我的问题是
我可能会在主程序运行一段时间后,新建一个执行类ProcessNew,然后我会吧该类的jar包,拷贝到java的classpath路径下面,再通过配置文件进行配置
这样的话,我不需要对主程序进行任何修改,就可以实现新的模块,但问题是,以上的步骤处理完之后,我必须把主程序重新启动,主程序才能找到ProcessNew,否则Class.forName("ProcessNew")无效,有没有方法,使主程序不需重启就动态加载成功
------
不可能吧,我觉的Class.forName(str)。你这里的str是从XML中读出来的,为什么要重起?
ReadFromXml的时候,要是XML不在,把线程挂起,所以你覆盖XML文件的时候先删除再拷贝。我没实验过 ,不过我觉的不用重起。
另外动态加载的类是不能放在classpath中,否则java会要求父加载器来加载该类,不会依据你的想法达到动态加载目的的