方案一: 采用reflections 框架(此框架依赖com.google.guava)
2、项目依赖
org.reflections
reflections
0.9.11
com.google.guavaguava
21.0
3、实现代码
//入参 要扫描的包名
Reflections f = new Reflections("com.ggband.netty.execute.command");
//入参 目标注解类
Set> set = f.getTypesAnnotatedWith(Cmd.class);
方案二: 采用ClassLoader扫描
1、实现代码
package com.ggband.netty;
import java.io.File;
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Set;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
public class Scanner {
/**
* 从包package中获取所有的Class
*
* @param packageName
* @return
*/
public Set> getClasses(String packageName) throws Exception {
// 第一个class类的集合
//List> classes = new ArrayList>();
Set> classes = new HashSet<>();
// 是否循环迭代
boolean recursive = true;
// 获取