i solved problem with NoClassDefFoundError but i have other problem
This program will use SimpleClassLoader. >>>>>> Load class : TestClass >>>>>> Not a system class. >>>>>> Load class : test.LocalModule >>>>>> Not a system class. >>>>>> Load class : java.lang.Object >>>>>> returning system class (in CLASSPATH). >>>>>> Returning newly loaded class. >>>>>> Returning newly loaded class. >>>>>> Load class : java.util.Vector >>>>>> returning system class (in CLASSPATH). Caught exception : java.lang.ClassCastException ########################## myjsp.jsp ######################### SimpleClassLoader sc = new SimpleClassLoader("M:\\Java\\JSP Projects\\Ticker\\servlet4\\"); Object o; String tst = "TestClass"; System.out.println("This program will use SimpleClassLoader."); try { Class cClass = sc.loadClass(tst); o= cClass.newInstance(); /// here ... throw cast exception ... in debuger i see that in "o" is instance of TestClass (TestClass is implented class of interface LocalModule) ((LocalModule)o).start("DF"); } catch (Exception e) { System.out.println("Caught exception : "+e); } ############################# package test; public interface LocalModule { /* Start the module */ void start(String option); } ############################# I'm using this classloader /** * Created by IntelliJ IDEA. * User: Alknaion * Date: 16.6.2003 * Time: 12:23:54 * To change this template use Options | File Templates. */ package test; import java.util.*; import java.io.*; public class SimpleClassLoader extends ClassLoader { private Hashtable classes = new Hashtable(); private String basePath; public SimpleClassLoader(String basePath) { this.basePath = basePath; } private byte[] getTypeFromBasePath(String typeName) { FileInputStream fis; String fileName = basePath + File.separatorChar + typeName.replace('.', File.separatorChar) + ".class"; try { fis = new FileInputStream(fileName); } catch (FileNotFoundException e) { return null; } BufferedInputStream bis = new BufferedInputStream(fis); ByteArrayOutputStream out = new ByteArrayOutputStream(); try { int c = bis.read(); while (c != -1) { out.write(c); c = bis.read(); } } catch (IOException e) { return null; } return out.toByteArray(); } public Class loadClass(String className) throws ClassNotFoundException { return (loadClass(className, true)); } public synchronized Class loadClass(String className, boolean resolveIt) throws ClassNotFoundException { Class result; byte classData[]; System.out.println(" >>>>>> Load class : "+className); result = (Class)classes.get(className); if (result != null) { System.out.println(" >>>>>> returning cached result."); return result; } try { result = super.findSystemClass(className); System.out.println(" >>>>>> returning system class (in CLASSPATH)."); return result; } catch (ClassNotFoundException e) { System.out.println(" >>>>>> Not a system class."); } /* Try to load it from our repository */ classData = getTypeFromBasePath(className); if (classData == null) { throw new ClassNotFoundException(); } /* Define it (parse the class file) */ result = defineClass(className, classData, 0, classData.length); if (result == null) { throw new ClassFormatError(); } if (resolveIt) { resolveClass(result); } classes.put(className, result); System.out.println(" >>>>>> Returning newly loaded class."); return result; } }