public static void scanFolader(String appPath) throws ESBBaseCheckedException {
        log.info("线程", Thread.currentThread().getName(), "开始扫描", appPath, "目录");

        try {
            // 解决路径中含空格、中文问题
            appPath = java.net.URLDecoder.decode(appPath, "UTF-8");
        } catch (UnsupportedEncodingException ex) {
            throw new ESBBaseCheckedException("CS-00005:解析类文件目录" + appPath + "时发生错误", ex);
        }
        File classDir = new File(appPath);
        File[] classDirFiles = classDir.listFiles(new FilenameFilter() {
            public boolean accept(File dir, String name) {
                if (new File(dir.getPath() + "/" + name).isDirectory()) {
                    return true;
                } else if (name.endsWith(".class"))
                    return true;
                else {
                    return false;
                }
            }
        });
        if (classDirFiles == null) {
            if (appPath.startsWith("/")) {
                appPath = appPath.substring(1);
                classDir = new File(appPath);
                classDirFiles = classDir.listFiles();
            }
        }
        if (classDirFiles != null) {
            for (File file : classDirFiles) {
                if (file.isDirectory()) {
                    scanClassInDirectory(file, appPath);
                } else {
                    processPathChar(file, appPath);
                }
            }
        }
    }