zoukankan      html  css  js  c++  java
  • Java通过编译文件获取项目包下的所有类

    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;
            }
        }
    }
  • 相关阅读:
    对json按某个键的值进行排序(转载)
    nrm -- NPM registry 管理工具
    easyui-filebox 文件上传
    Netty,Thrifty
    VS2015 framework4.5代码提示英文切换为中文
    .NET Runtime version 2.0.50727.8762
    js moment.js日期操作类 datetime,日期操作,dayjs
    Oracle.ManagedDataAccess.dll
    打造自己的JavaScript武器库(转)
    Vue.js实战 5.5章 购物车
  • 原文地址:https://www.cnblogs.com/47Gamer/p/14033060.html
Copyright © 2011-2022 走看看