Java扫描指定包下的class文件(spring component scan package注解的完成)ITeye - 千亿集团

Java扫描指定包下的class文件(spring component scan package注解的完成)ITeye

2019年02月25日10时33分16秒 | 作者: 幼南 | 标签: 文件,目录,用户 | 浏览: 1807

public static void findAndAddClassesInPackageByFile(String packageName,               String packagePath, final boolean recursive, Set Class ?  classes) {           // 获取此包的目录 树立一个File           File dir = new File(packagePath);           // 假如不存在或许 也不是目录就直接回来           if (!dir.exists() || !dir.isDirectory()) {               // log.warn("用户界说包名 " + packageName + " 下没有任何文件");               return;           }           // 假如存在 就获取包下的一切文件 包括目录           File[] dirfiles = dir.listFiles(new FileFilter() {               // 自界说过滤规矩 假如能够循环(包括子目录) 或则是以.class结束的文件(编译好的java类文件)               public boolean accept(File file) {                   return (recursive   file.isDirectory())                           || (file.getName().endsWith(".class"));               }           });           // 循环一切文件           for (File file : dirfiles) {               // 假如是目录 则持续扫描               if (file.isDirectory()) {                   findAndAddClassesInPackageByFile(packageName + "."                           + file.getName(), file.getAbsolutePath(), recursive,                           classes);               } else {                   // 假如是java类文件 去掉后边的.class 只留下类名                   String className = file.getName().substring(0,                           file.getName().length() - 6);                   try {                       // 增加到调集中去                       //classes.add(Class.forName(packageName + . + className));                                            //通过回复同学的提示,这儿用forName有一些欠好,会触发static办法,没有运用classLoader的load洁净                                           classes.add(Thread.currentThread().getContextClassLoader().loadClass(packageName + . + className));                                     } catch (ClassNotFoundException e) {                       // log.error("增加用户自界说视图类过错 找不到此类的.class文件");                       e.printStackTrace();                   }               }           }       }
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表千亿集团立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章