1,创建接口及实现类
package com.timeriver.classloader; /** * @author rivertime.wang * @date 2014-3-9 上午10:17:04 */ public interface IPluginModule { public void helloWorld(); }
public class AModule implements IPluginModule{ @Override public void helloWorld() { System.out.println("hello world, I am java Developer A"); } }
public class BModule implements IPluginModule{ @Override public void helloWorld() { System.out.println("hello world, I am java Developer B..."); } }
2,在eclipse项目src目录下创建文件(与根目录com,同级)
src/META-INF/servicescom.timeriver.classloader.IPluginModule
com.timeriver.classloader.impla.AModule com.timeriver.classloader.implb.BModule
3.1,运行(class模式)
public class PluginManager { public static void main( String[] args ) { List<IPluginModule> list = new PluginManager().getPluginModules(); for(IPluginModule pluginModule : list){ pluginModule.helloWorld(); } } public List<IPluginModule> getPluginModules(){ List<IPluginModule> modules = new ArrayList<IPluginModule>(); ServiceLoader<IPluginModule> serviceLoader = ServiceLoader.load( IPluginModule.class ); for(IPluginModule plugin: serviceLoader){ modules.add( plugin ); } return modules; } }
3.2,运行(jar模式)
用eclipse,在AModule.java上右击,export-->jar类型
不会用CMD命令导出的单个文件,没有包名(com.timeriver.classloader)