…alguém ai sabe como eu faço pra pegar o nome de todas as classes de um determinado pacote via Reflection ??? …tentei usar Package pa = Package.getPackage("nome.do.meu.pacote"); consegui pegar o pacote mas o que quero mesmo é capturar o nome de todas as classes contidas neste pacote …
Class[] classes = getClasses("br.com.maxiconsystems.embarcador.modelo");
for (int i = 0; i < classes.length; i++) {
//System.out.println(classes[i].getName());
}
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
}
public static Class[] getClasses(String pckgname) throws ClassNotFoundException {
ArrayList classes=new ArrayList();
// Get a File object for the package
File directory=null;
try {
directory=new File(Thread.currentThread().getContextClassLoader().getResource(pckgname.replace(’.’, ‘/’)).getFile());
} catch(NullPointerException x) {
throw new ClassNotFoundException(pckgname+" does not appear to be a valid package1");
}
if(directory.exists()) {
// Get the list of the files contained in the package
String[] files=directory.list();
for(int i=0; i<files.length; i++) {
// we are only interested in .class files
if(files[i].endsWith(".class")) {
// removes the .class extension //classes.add(Class.forName(pckgname+’.’+files[i].substring(0, files[i].length()-6)));
Field[] campos = null;
System.out.println("Tabela: "+files[i].substring(0, files[i].length()-6));
campos = Class.forName(pckgname+'.'+files[i].substring(0, files[i].length()-6)).getFields(); // getDeclaredFields();
for (int j =0; j < campos.length; j++) {
System.out.println(campos[j].getName());
}
classes.add(Class.forName(pckgname+'.'+files[i].substring(0, files[i].length()-6)));
}
}
} else {
throw new ClassNotFoundException(pckgname+" does not appear to be a valid package2");
}
Class[] classesA=new Class[classes.size()];
classes.toArray(classesA);
return classesA;
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ClassesDoPacote();
}
});
}
…esta solução so funciona pra pacotes da própria aplicação, se o pacote estiver no classPath não adianta muito , vou ter que achar outra solução que faça isso, dado o nome de um pacote (estando ou não no classPath) busque o nome das classes contidas no mesmo !!!
…se conseguir eu posto aqui !!!