private Set<String> getClassInPath(String path) {
        Set<String> ret = new HashSet<String>();
        String packagePath = path.replace('.', '/');
        if(!packagePath.endsWith("/")){
            packagePath +=  "/";
        }
        try {
            List<File>  classPaths = getClassPath();
            for (File classPath : classPaths) {
                if (!classPath.exists())
                    continue;
                if (classPath.isDirectory()) {
                    File dir = new File(classPath, packagePath);
                    if (!dir.exists()){
                        continue;
                    }
                    recurCollect(dir, packagePath, ret);
                    
                } else {
                    FileInputStream fis = new FileInputStream(classPath);
                    JarInputStream jis = new JarInputStream(fis, false);
                    JarEntry e = null;
                    while ((e = jis.getNextJarEntry()) != null) {
                        String eName = e.getName();
                        if (eName.startsWith(packagePath) && eName.endsWith(".class")) {
                            ret.add(eName);
                        }
                        jis.closeEntry();
                    }
                    jis.close();
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

        return ret;
    }