import java.lang.reflect.*;
import java.net.*;

public class TestFilterClassLoader {
  public static void main (String args[]) {
    URL url = null;
    try { url = new URL ("http://yourfavoritesite.com");
    } catch (MalformedURLException e) { }
    String badclasses[] = new String[] { "C1", "C2", "C3" };
    FilterClassLoader cl = new FilterClassLoader(url, badclasses);
    Class c = null;
    Method m = null;
    try { c = cl.loadClass (args[0], true);
    } catch (ClassNotFoundException e) {
      System.out.println ("Class not found\n" + e);
      return;
    }
    Class argtypes[] = new Class[] { String[].class };
    try { m = c.getMethod ("main", argtypes);
    } catch (NoSuchMethodException e) {
      System.out.println ("The main method was not found\n" + e);
      return;
    };
    Object arglist[] = new Object[1];
    arglist[0] = new String[args.length - 1];
    for (int i=0; i < args.length - 1; i++)
          ((String[])arglist[0])[i] = args[i+1];
    try { m.invoke (null, arglist); }
      catch (Exception e) {
        System.out.println ("Error upon invocation\n" + e);
      };
  }
}

