public static Set<Class<?>> scan(String... packageNames) {
		Set<Class<?>> classes = new LinkedHashSet<Class<?>>();
		if (packageNames != null && packageNames.length > 0) {
			try {
				for (String one : packageNames) {
					Set<ClassInfo> classInfos = null;

					classInfos = ClassPath.from(
							Thread.currentThread().getContextClassLoader())
							.getTopLevelClassesRecursive(one);

					for (ClassInfo classInfo : classInfos) {
						classes.add(classInfo.load());
					}
				}
			} catch (IOException e) {
				LOG.error("scan class error . package:{}",
						Arrays.toString(packageNames));
			}
		}
		return classes;
	}