一、建立Service接口(Service.java):
package service;

public interface Service ...{
public void start();
public void shutdown();
}
二、建立接口的实例化应用(AppDemo.java):
package application;
import service.Service;

public class AppDemo implements Service ...{

public void shutdown() ...{
System.out.println("关闭");
}

public void start() ...{
System.out.println("启动");
}
}
三、将AppDemo.java导出为Jar包,并将其放置在工程的application目录下。
四、新建Jar包加载类(JarLoader.java):
package loader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;

public class JarLoader extends URLClassLoader ...{
private static JarLoader loader = null;

private JarLoader()...{
super(new URL[0], JarLoader.class.getClassLoader());
}
public static JarLoader getInstance()...{
if(loader==null)
loader = new JarLoader();
return loader;
}
public void addURL(String url) throws MalformedURLException ...{
this.addURL(new URL(url));
}
}
五、测试一下:
package test;

import java.net.MalformedURLException;


import service.Service;

import loader.JarLoader;


public class Test ...{


/** *//**
* @param args
*/

public static void main(String[] args) ...{
JarLoader loader = JarLoader.getInstance();


try ...{
loader.addURL("jar:file:///"+System.getProperty("user.dir")
+ "/application/app1.jar" + "!/");
Service serv = (Service)Class.forName("application.AppDemo", true, loader).newInstance();
serv.start();
serv.shutdown();

} catch (MalformedURLException e) ...{
e.printStackTrace();

} catch (InstantiationException e) ...{
e.printStackTrace();

} catch (IllegalAccessException e) ...{
e.printStackTrace();

} catch (ClassNotFoundException e) ...{
e.printStackTrace();
}

}

}





发表评论: