protected Class findClassFromURL(String name, CacheClassLoader loader) throws ClassNotFoundException {

      URL url = null;
      InputStream in = null;
      try {
         if(resourceURL.toString().endsWith("/")) {
            url = new URL(resourceURL.toString() + CacheClassLoader.getClassFileName(name));
         }
         else {
            url = new URL(resourceURL.toString() + "/" + CacheClassLoader.getClassFileName(name));
         }

         //Now download the URL
         Boot.getCacheManager().downloadResource(null, url, null, cachePolicy);
         File f = Boot.getCacheManager().getCachedFileForURL(url);
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         in = new FileInputStream(f);
         byte buf[] = new byte[1024];
         int c = in.read(buf);
         while(c != -1) {
            out.write(buf, 0, c);
            c = in.read(buf);
         }

         byte data[] = out.toByteArray();
         URL u = resourceURL;
         if(u != null && !u.getProtocol().equals("file")) {
            u = Boot.getCacheManager().convertToCachedURL(u);
         }
         CodeSource cs = new CodeSource(u, (java.security.cert.Certificate[])null);
         Class cls = loader.defineClassInternal(name, data, 0, data.length, cs);
         return cls;
      }
      catch(Exception exp) {
         logger.log(Level.SEVERE, exp.getMessage(), exp);
         throw new ClassNotFoundException(name);
      }
      finally {
         if(in != null) {
            try {in.close();}catch(IOException ioExp){ioExp.printStackTrace();}
         }
      }

   }