java class reload 动态加载_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java class reload 动态加载

java class reload 动态加载

 2014/4/4 3:20:56  sharp-fcc  程序员俱乐部  我要评论(0)
  • 摘要:在运行时动态加载jar包容易,但是如果想动态替换运行时的类,需要定义自己的classloader,用自己的classloader来load这个类。具体代码如下。publicclassUClassloaderextendsURLClassLoader{publicUClassloader(URL[]urls){super(urls);}publicstaticvoidmain(Stringargs[])throwsIOException,SecurityException
  • 标签:Java class

在运行时动态加载jar包容易,但是如果想动态替换运行时的类,需要定义自己的classloader , 用自己的classloader 来load这个类。具体代码如下。

public class UClassloader extends URLClassLoader{
	   public UClassloader(URL[] urls) {
		super(urls);
	}

    public static void main(String args[]) throws IOException, SecurityException, ClassNotFoundException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, InterruptedException{
    	File f = new File("/Users/fcc/workspace/edm/myclass.jar");    	
        UClassloader u = new UClassloader(new URL[]{f.toURI().toURL()});
        Class<?> cs = u.loadClass("org.apache.lucene.demo.classloader.MyClass");
        Interface instance = (Interface)cs.newInstance();
        instance.say();
        u.close();
        Thread.sleep(15*1000);        
        UClassloader uAgain = new UClassloader(new URL[]{f.toURI().toURL()});
        Constructor<?> csAgain = uAgain.loadClass("org.apache.lucene.demo.classloader.MyClass").getConstructor();
        Interface instanceAgain = (Interface)csAgain.newInstance();
        instanceAgain.say();
        uAgain.close();
    }

?

发表评论
用户名: 匿名