import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
public class ScanPackage {
public static List<Class<?>> getClassesByPackageName(String packageName) {
ArrayList classes = new ArrayList();
try {
ClassLoader e = Thread.currentThread().getContextClassLoader();
String path = packageName.replace('.', '/');
Enumeration resources = e.getResources(path);
ArrayList dirs = new ArrayList();
while (resources.hasMoreElements()) {
URL directory = (URL) resources.nextElement();
dirs.add(new File(directory.getFile()));
}
Iterator arg6 = dirs.iterator();
while (arg6.hasNext()) {
File directory1 = (File) arg6.next();
classes.addAll(findClasses(directory1, packageName));
}
} catch (Exception arg7) {
arg7.printStackTrace();
}
return classes;
}
private static List<Class<?>> findClasses(File directory, String packageName) throws ClassNotFoundException {
ArrayList classes = new ArrayList();
if (!directory.exists()) {
return classes;
} else {
File[] files = directory.listFiles();
File[] arg6 = files;
int arg5 = files.length;
for (int arg4 = 0; arg4 < arg5; ++arg4) {
File file = arg6[arg4];
if (file.isDirectory()) {
assert !file.getName().contains(".");
classes.addAll(findClasses(file, packageName + '.' + file.getName()));
} else if (file.getName().endsWith(".class")) {
classes.add(Class
.forName(packageName + "." + file.getName().substring(0, file.getName().length() - 6)));
}
}
return classes;
}
}
}