参考:http://blog.csdn.net/rchm8519/article/details/39557499
public static Set<Class> GetClassFromJar2(JarFile jarFile, String keyword, String basePakage) {
String packageDirName = basePakage.replace('.', '/');
Enumeration<JarEntry> entries = jarFile.entries();
Set<Class> classes = new LinkedHashSet<Class>();
while (entries.hasMoreElements()) {
try {
JarEntry jarEntry = entries.nextElement();
String name = jarEntry.getName();
if (name.charAt(0) == '/') {
name = name.substring(1);
}
if (!StrHelper.isEmptyOrNull(packageDirName) && !name.startsWith(packageDirName)) {
continue;
}
if (name.endsWith(".class") && !name.contains("com/bj58/spat/scf/serializer")) {
if (checkJarEntry(jarFile, jarEntry, keyword)) {
String className = name.replaceAll(".class", StrHelper.EmptyString).replaceAll("/", ".");
Class type = null;
type = Thread.currentThread().getContextClassLoader().loadClass(className);
if (type != null) {
classes.add(type);
}
}
}
} catch (Throwable ex) {
ex.printStackTrace();
}
}
return classes;
}