Results 1 to 1 of 1
- 03-30-2011, 04:57 AM #1
Member
- Join Date
- Mar 2011
- Posts
- 1
- Rep Power
- 0
ClassLoader - can't find class java.lang.Object
I'm playing a little bit with ClassLoader. I write my own class loader and use it to load HelloWorld class. While loading HelloWorld class, the class loader can't find java.lang.object so it gives the exception as following:
I've checked the file rt.jar and it includes java/lang/Object.class already. Do you know how to fix this problem? Thank you so much.Exception in thread "main" java.lang.NoClassDefFoundError: java/lang/Object
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader. java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java :616)
at CustomClassLoader.findClass(CustomClassLoader.java :28)
at CustomClassLoader.loadClass(CustomClassLoader.java :15)
at CustomClassLoaderTest.main(CustomClassLoaderTest.j ava:5)
Here is my class loader:
And the way I use it:Java Code:import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Enumeration; import java.util.Hashtable; public class CustomClassLoader extends ClassLoader { public CustomClassLoader(){ super(CustomClassLoader.class.getClassLoader()); } public Class loadClass(String className) throws ClassNotFoundException { return findClass(className); } public Class findClass(String className){ byte classByte[]; Class result=null; result = (Class)classes.get(className); if(result != null){ return result; } try{ String classPath = (String)ClassLoader.getSystemResource(className.replace('.',File.separatorChar)+".class").getFile(); classByte = loadClassData(classPath); result = defineClass(className,classByte,0,classByte.length,null); classes.put(className,result); return result; }catch(Exception e){ return null; } } private byte[] loadClassData(String className) throws IOException{ File f ; f = new File(className); int size = (int)f.length(); byte buff[] = new byte[size]; FileInputStream fis = new FileInputStream(f); DataInputStream dis = new DataInputStream(fis); dis.readFully(buff); dis.close(); return buff; } private Hashtable classes = new Hashtable(); }
Java Code:public class CustomClassLoaderTest { public static void main(String [] args) throws Exception{ CustomClassLoader test = new CustomClassLoader(); Class cHelloWorld = test.loadClass("com.octech.test.HelloWorld"); } }
Similar Threads
-
this is the error i get: cannot find symbol method parseString(java.lang.String)
By Elcliff in forum New To JavaReplies: 10Last Post: 12-22-2010, 01:12 AM -
Operator < cannot be applied to java.lang.Object, Object
By Albert in forum Advanced JavaReplies: 2Last Post: 11-26-2010, 02:12 AM -
cannot find symbol method initCause(java.lang.ClassNotFoundException)
By Taxi in forum CLDC and MIDPReplies: 8Last Post: 10-17-2010, 10:24 AM -
Replace ClassLoader with custom class loader in Java Plugin
By pwlodarczak in forum Java AppletsReplies: 6Last Post: 09-20-2010, 07:46 AM -
couldn't find the package java.lang
By katie in forum New To JavaReplies: 2Last Post: 08-04-2007, 05:04 PM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks