Liste de tous les modules d'un paquet

Je suis à la recherche d'un moyen de la liste de tous les modules de l'arbitraire d'un package en Java.

Quelque chose comme ceci:

Package basePackage = getPackage("com.mypackage");
for(Package subPackage : basepackage.getSubPackages()){
  System.out.println(subPackage.getName());
}

Est-il un moyen de le faire? Merci à l'avance.

Comment IDE(disons Netbeans) le faire?
Liste de tous les modules d'un paquet

Mise à JOUR:

Je suis en train d'essayer de trouver tous les mappeurs de package pour MyBatis. Dans mon projet, tous les mappeurs de paquets a pour nom "*.les cartographes". Par exemple: "un.b.les cartographes" ou "un.b.c.les cartographes". Le truc c'est que je ne connais que le forfait de base, et pas sûr de savoir comment beaucoup de mappeurs de paquets sous elle.

Mise à JOUR:
Voici mon code en essayant d'utiliser la réflexion de la bibliothèque de le faire:

private Set<String> getPackagesNames() {
    Reflections reflections = new Reflections("com.mypackage");
    Set<Class<? extends Object>> allClasses = reflections.getSubTypesOf(Object.class);
    Set<String> packageNames = new HashSet<>();

    for( Iterator<Class<? extends Object>> it = allClasses.iterator(); it.hasNext(); ) {
        Class<? extends Object> subClass= it.next();
        packageNames.add(subClass.getPackage().getName());
    }

    return packageNames;
}

Ne sais pas pourquoi cela ne fonctionne pas. Aucune classe n'est trouvé ici....

Mise à JOUR

Voici mon code pour le faire. Lente, mais la performance n'est pas que le grand souci dans mon cas. Je n'ai jamais utilisé le Printemps avant que, donc, si il ya de meilleures façons de le faire, faites le moi savoir. Merci.

    private static Set<String> getPackages(String basePackage) throws IOException, ClassNotFoundException {
        Set<String> packagesNames = new HashSet<>();

        ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
        MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resourcePatternResolver);

        String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + resolveBasePackage(basePackage) + "/" + "**/*.class";
        Resource[] resources = resourcePatternResolver.getResources(packageSearchPath);
        for( Resource resource : resources ) {
                MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource);    
                Class aClass = Class.forName(metadataReader.getClassMetadata().getClassName());
                String packageName = aClass.getPackage().getName();
                packagesNames.add(packageName);
            }
        }
        return packagesNames;
    }

    private static String resolveBasePackage(String basePackage) {
        return ClassUtils.convertClassNameToResourcePath(SystemPropertyUtils.resolvePlaceholders(basePackage));
    }

La plupart du code est copié à partir de Comment puis-je lire toutes les classes d'un package Java dans le classpath?

InformationsquelleAutor Xin | 2013-04-09