PDA

View Full Version : [JAVA] Loadig dinamico classi, come risolvere??


giuseppe83
19-01-2006, 21:41
Ho la necessità di caricare dinamicamente una classe, impostando dinamicamente anche le dipendenze di questa classe anche da eventuali file jar. Ho tentato un approccio del tipo mostrato nell'esempio seguente che però genera una eccezzione


public class prova {

public prova()throws Exception{

URLClassLoader cl;
File f1=new File("C:/IRApplication/lib/jdeal/jdeal.jar");
File f2=new File("C:/IRApplication/IR");
File f10=new File("C:/IRApplication/extensions/algorithms/DCGA");

URL url1=f1.toURL();
URL url2=f2.toURL();
URL url10=f10.toURL();

URL[] u=new URL[] {url2,url1,url10};
//vreo un classloader per leggere la mia classe
cl = new URLClassLoader(u,this.getClass().getClassLoader());

//cerco di caricare la classe
Class c=Class.forName("it.unisannio.rcost.cise.dcga.IRDeterministicCrowding",true,cl);
System.out.println("OK");
}

Il codice dicevo genera un'eccezione dovuta all'impossibilità di risolvere correttamente una dipendenza tra la classe ed una classe contenuta nel jar



Exception in thread "main" java.lang.NoClassDefFoundError: pt/laseeb/jdeal/ChromosomeEvaluator
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at prova.<init>(prova.java:21)
at prova.main(prova.java:28)

qualcuno ha idea del perchè possa succedere questo????

giuseppe83
19-01-2006, 22:14
risolto:)

kingv
19-01-2006, 22:21
risolto:)



qual era il problema?
il tuo codice sembra correto.