老师,这里获取到“包名”以后,进入扫描类的方法,其中得到的CompoundEnumeration对象resources无法进入while(resources.hasMoreElements())
TomcatServer tomcatServer=new TomcatServer(args);
try {
tomcatServer.startServer();
String packageName=clazz.getPackage().getName();
System.out.println(packageName);
// 包名正确 但classList.size()==0
List<Class<?>> classList=ClassScanner.scanClass(packageName);
classList.forEach(it->System.out.println(it.getName()));
} catch (Exception e) {
e.printStackTrace();
}
public static List<Class<?>> scanClass(String packageName) throws IOException, ClassNotFoundException
{
List<Class<?>> classList=new ArrayList<>();
String path=packageName.replace(".", "/");
ClassLoader defaultClassLoader=Thread.currentThread().getContextClassLoader();
Enumeration<URL> resources=defaultClassLoader.getResources(packageName);
while(resources.hasMoreElements()){ // 循环无法进入
URL resource=resources.nextElement();
if (resource.getProtocol().contains("jar")){
// 如果资源类型为 jar
JarURLConnection jarURLConnection= (JarURLConnection) resource.openConnection();
String jarFilePath=jarURLConnection.getJarFile().getName();
classList.addAll(getClassesFromJar(jarFilePath, path));
}else{
// 其他资源类型暂无操作
}
}
return classList;
}