Se canonicalName termina con * allora dovrei caricare tutte le classi che stanno nel package.
Per semplificare adesso provo solo a caricare a classe jcoomlShell.comandi che so che funziona.
Il problema sta in esploraFile..che mi trova tutte le classi del package(come è giusto che faccia) e me le stampa..se però aggiungo il metodo forName() mi solleva l'errore class not found
Questo è il mio codice, qualsiasi consiglio è bene accetto..
public class ImplCommand implements Command{
private static int count = 0;
private static File from;
private static String canonicalName;
private static String subCanonical;
private static String dacanc;
public ImplCommand(){
lc = new HashSet<LoadClass>(); /**/
}
public String exec(){
canonicalName="jcoomlShell.comandi.*";
/**/
if (canonicalName.endsWith("*")){
subCanonical=canonicalName.substring(0, canonicalName.length()-1);
try {
String userDir = System.getProperty("user.dir");
System.out.println(userDir);
//directory dove cercare i file con determinate estensioni
from = new File(userDir);
//estensione del file da cercare.
String tipo = ".class";
//metodo ricorsivo che esplora la directory from
esploraFile(from, tipo);
if(count==0)
System.out.println("Nessun file trovato");
} catch (NullPointerException e) {
System.err.println("Wrong path");
}
}
return canonicalName;
}
public static void esploraFile(File from, String tipo) {
//utilizziamo per la ricerca un filtro
File[] files = from.listFiles(new Filter(tipo));
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()){
try {
Class.forName(jcoomlShell.comandi);
System.out.println(count + " " + files[i].getName());
count++;
}
catch (Exception e) {
System.err.println("Class not found!");
} ;
}
else
esploraFile(files[i],tipo);
}
}
LO so che così caricherà solo la classe jcoomlShell.comandi ma so per certo che è corretto come parametro infatti se l'aggiungo in exec(), forName viene eseguita correttamente.
Se riesco a capire perchè nonfunziona allora posso caricare tutte le classi

Rispondi quotando
