code: @SuppressWarnings("unchecked")
  	public final void loadAllClass(){
  		if(isLoading)
  		{
  			return;
  		}
  		isLoading=true;
  		classLoader = new ScriptClassLoader();
  		final ConcurrentHashMap<Integer, Class<? extends T>> codeMap=new ConcurrentHashMap<Integer, Class<? extends T>>();
  		for (Entry<String,ClassFile> entry : scriptFilePaths.entrySet()) 
  		{
  			ClassFile classFile = entry.getValue();
  			try {
  				Class<T> scriptClass=null;
  				Class<?> clazz=loadClass(classLoader, classFile);
  				if(clazz!=null)
  				{//类型转换
  					scriptClass=(Class<T>)clazz;
  				}
  				if(scriptClass!=null)
  				{
  					boolean isAbstract=Modifier.isAbstract(scriptClass.getModifiers());//是否是抽象类
  					if(isAbstract)
  					{//抽象类
  //						_log.info("loaded abstractScript:" + classFile.getFilePath());
  					}else
  					{
  						T script=scriptClass.newInstance();
  						int code=script.getMessageCode();
  						if(codeMap.containsKey(code))
  						{//如果已经存在相同code的脚步则不加载
  							_log.error("find Repeat code script,addingScript:"+script.getClass()+",existScript:"+codeMap.get(code));
  						}else
  						{
  							_log.info("**********LoadRegistClass<" + classFile.getClassName()+">**********");
  							codeMap.put(code,scriptClass);
  							_log.info("loaded codeScript,code="+code+"(0x"+Integer.toHexString(code)+"),path=" + classFile.getFilePath());
  						}
  					}
  					//如果相同脚步的类文件发生改变后可能code会不一致,所以即使有相同code的脚步依然要记录时间
  					classFile.setLastModifyTime(new File(classFile.getFilePath()).lastModified());//更新时间
  				}
  			} catch (Exception e) {
  				_log.error(e.getMessage(),e);
  			}
  		}
  		this.codeMap.putAll(codeMap);
  		isLoading=false;
  	}
docs: 加载所有的类