throw new ClassNotFoundException(className);
throw new ClassNotFoundException(className, e);
  public Class findClass (String className) throws ClassNotFoundException {    if (className.startsWith("[")) {      VM_TypeReference typeRef = VM_TypeReference.findOrCreate(this,                                                                VM_Atom.findOrCreateAsciiAtom(className.replace('.','/')));      VM_Type ans = typeRef.resolve();      loaded.put(className, ans);      return ans.getClassForType();    } else {          if ( ! VM.dynamicClassLoadingEnabled ) {        VM.sysWrite("Trying to load a class (");        VM.sysWrite(className);        VM.sysWrite(") too early in the booting process, before dynamic");        VM.sysWriteln(" class loading is enabled; aborting.");        VM.sysFail("Trying to load a class too early in the booting process");      }      // class types: try to find the class file      try {                 if (className.startsWith("L") && className.endsWith(";")) {          className = className.substring(1, className.length()-2);        }        InputStream is = getResourceAsStream(className.replace('.','/') + ".class");        if (is == null) throw new ClassNotFoundException(className);        DataInputStream dataInputStream = new DataInputStream(is);        Class cls = null;        try {          VM_Type type = VM_ClassLoader.defineClassInternal(className, dataInputStream, this);          loaded.put(className, type);          cls = type.getClassForType();        } finally {          try {            // Make sure the input stream is closed.            dataInputStream.close();          } catch (IOException e) { }        }        return cls;      } catch (ClassNotFoundException e) {        throw e;      } catch (Throwable e) {        // We didn't find the class, or it wasn't valid, etc.        throw new ClassNotFoundException(className);      }    }  }