jar包如何动态加载进去? 
我一个程序正在运行中,运行状态时要动态加载类进去,我加载类的方法用 
Service service = (Service) Class.forName(info.getServicePath()).newInstance(); 
来实现 
info.getServicePath()可以得到一个类的位置,比如"com.marssoft.services.TXService" 
Service 是一个父类,继承他的类在以后的工作中会陆续写进去,然后以jar包的方式放到运行目录下 
现在的问题是,当平台一起来的时候如果jar存在,类就能写进去,但是一旦起来后再放入新的jar包就不认了,怎么办? 
我想在平台运行期间不断的加jar包进去,然后通过配置文件的改变来动态加载类 
高手们有什么办法实现?

解决方案 »

  1.   

    每个平台都有自己的ClassLoader实例,你要先获取平台当前的ClassLoader实例,用获取的ClassLoader来加载指定的jar
      

  2.   

    我觉得你可以考虑做一个jar包管理类,一开始就加载,然后一直存在内存中,有新的jar包进来时,添加注册项到管理类中的集合中去,然后getServicePath()改改,作为从管理类的注册集合中去取。
      

  3.   

    我现在问的就是这个问题,怎么对jar包进行管理?
    包括动态加载jar包,更新加载的jar包,移除加载的jar包
      

  4.   

    我觉得,你可以写一个线程先让其定时遍历读取某文件夹下的jar包名,并和集合中的比较,如果发现现有集合中没有,那就添加进来。假如你立刻要加载某jar包,可以让其立刻遍历该文件夹。可以先在集合中搜索,没有再去文件夹里搜索并加载。会用到目录遍历,file.listFiles(), isDirectory()等可用.