Salve a tutti..sto realizzando un classloader personalizzato per caricare classi dal disco a runtime.
Il problema è che non riesco a capire perche il mio codice non va.
Forse sbaglioo qualche cosa ma non riesco a vedere l'errore.
ecco il codice:
codice:public static void main(String[] args) throws ClassNotFoundException, FileNotFoundException, IOException { Loader load = new Loader(); Class cls = load.loadClass("/Users/NetBeansProjects/testClass/build/classes/testclass/testClass.class"); System.out.println(cls.getName()); }
Come vedete io passo al mio classloader il path del file .class da caricare e lo leggo tramite FileInputStream;codice:public class Loader extends ClassLoader { @Override public Class loadClass(String nameclass){ Class result=null; byte classData[]=null; try{ FileInputStream file = new FileInputStream(nameclass); classData=new byte[file.available()]; file.read(classData); result= defineClass(null,classData,0,classData.length); }catch(Exception e){System.out.println(e.getMessage());} return result; } }
poi chiamo il metodo defineClass per creare effettivamente la mia classe.
pero non funziona.
ottengo questi errori :
Exception in thread "main" java.lang.NoClassDefFoundError: testClass (wrong name: testclassloader/testClass)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java :676)
at java.lang.ClassLoader.defineClass(ClassLoader.java :521)
at testclassloader.Loader.loadClass(Loader.java:28)
at testclassloader.Main.main(Main.java:27)
Java Result: 1
sapete aiutarmi?
grazie in anticipo.
marco

Rispondi quotando