void extractClassPackages(File srcDir, String appMainPackage, 
			Collection<Class<?>> packageClasses) {
		
		File packageDir = new File(srcDir, appMainPackage);
		File[] files =  packageDir.listFiles();
		LOGGER.fine("extractClassPackages files: " + files);
		
		for(File file : files) {
			
			String entryFilePath;
			try {
				entryFilePath = file.getCanonicalPath();
			} catch (IOException e) {
				LOGGER.log(Level.WARNING, "extractClassPackages failed", e);
				continue;
			}
			
			if(file.isDirectory()) {
				extractClassPackages(file, appMainPackage, packageClasses);
			} else {
				if(entryFilePath.endsWith(appMainPackage + File.separator +  file.getName())
					&& !file.isDirectory() 
					&& file.getName().endsWith(".class")) {
					
					try {
						Class<?> classType = Class.forName(StringUtil.pathToClassName(
								appMainPackage + "." + file.getName()));
						packageClasses.add(classType);	
					} catch (ClassNotFoundException e) {
						// Skipping those classes which cannot be found in classpath!
						LOGGER.log(Level.WARNING, "Loading Handler from local path failed for " 
								+ file, e);
					}
				}
			}
			
		}
		
	}