code: protected final void loadAllClass(List<File> jarFiles) throws Exception 
  	{
  		if (state == State.loading) 
  		{
  			return;
  		}
  		rwLock.writeLock().lock();
  		try {
  			state = State.loading;
  			//复制文件到临时目录,因为urlClassLoader加载后会占用文件,导致后续无法删除scriptLibDir下的文件
  			List<MirrorFile> waiteLoad=copyToTmpDir(jarFiles);
  			ScriptClassLoader newClassLoader = new ScriptClassLoader();
  			Map<String, RecordFile> newLoadedRecord = new HashMap<String, RecordFile>();
  			Set<Class<?>> allClass = new HashSet<Class<?>>();
  			for (MirrorFile mf : waiteLoad) 
  			{
  				File file=mf.getFile();
  				File mirrorFile=mf.getMirrorFile();
  				//使用镜像文件加载进classLoader
  				Set<Class<?>> jarClass = loadAllClass(mirrorFile, newClassLoader);
  				allClass.addAll(jarClass);
  				//记录文件变化,使用源文件的修改时间
  				RecordFile rf = new RecordFile(file.getPath());
  				rf.setLastModifyTime(file.lastModified());
  				newLoadedRecord.put(rf.getFilePath(), rf);
  				_log.debug("加载jar文件" + rf.getFilePath() + ",class数量:" + jarClass.size() + ",class:" + jarClass.toString());
  			}
  			Map<Integer, Class<? extends T>> newCodeMap = findScriptCodeMap(findScriptClass(allClass));
  			this.codeMap.clear();
  			this.loadedRecord.clear();
  			this.classLoader.close();
  			this.codeMap.putAll(newCodeMap);
  			this.loadedRecord.putAll(newLoadedRecord);
  			this.classLoader = newClassLoader;
  			this.classLoader.close();
  		} finally {
  			state = State.loaded;
  			rwLock.writeLock().unlock();
  		}
  	}
docs: 加载所有的类
  @param jarFiles
  @throws IOException
  @throws ClassNotFoundException
  @throws IllegalAccessException
  @throws InstantiationException