Index: vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java =================================================================== --- vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java (revision 599293) +++ vm/vmcore/src/kernel_classes/javasrc/java/lang/Class.java (working copy) @@ -146,15 +146,15 @@ clazz = classLoader.loadClass(name); } } + if(clazz == null) { + throw new ClassNotFoundException(name); + } if(classLoader != null && classLoader.findLoadedClass(name) == null) { // classloader overloads loadClass method though it is not // generally recommended // have to register initiating loader for clazz from here classLoader.registerInitiatedClass(clazz); } - if(clazz == null) { - throw new ClassNotFoundException(name); - } if (initialize) { VMClassRegistry.initializeClass(clazz); } else { Index: vm/vmcore/src/kernel_classes/javasrc/java/lang/ClassLoader.java =================================================================== --- vm/vmcore/src/kernel_classes/javasrc/java/lang/ClassLoader.java (revision 599293) +++ vm/vmcore/src/kernel_classes/javasrc/java/lang/ClassLoader.java (working copy) @@ -574,14 +574,17 @@ } else { try { clazz = parentClassLoader.loadClass(name); - try { - VMStack.getCallerClass(0) - .asSubclass(ClassLoader.class); - } catch(ClassCastException ex) { - // caller class is not a subclass of java/lang/ClassLoader - // so, register as initiating loader as we are called from - // outside of ClassLoader delegation chain - registerInitiatedClass(clazz); + if(clazz != null) { + try { + VMStack.getCallerClass(0) + .asSubclass(ClassLoader.class); + } catch(ClassCastException ex) { + // caller class is not a subclass of + // java/lang/ClassLoader so register as + // initiating loader as we are called from + // outside of ClassLoader delegation chain + registerInitiatedClass(clazz); + } } } catch (ClassNotFoundException e) { }