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)