@@ -0,0 +1,1541 @@
+package java.net;%0A%0Aimport java.io.File;%0A%0Aimport java.io.InputStream;%0Aimport java.io.IOException;%0Aimport java.io.ByteArrayOutputStream;%0A%0Apublic class URLClassLoader extends ClassLoader %7B%0A%0A  private final File jarFile;%0A%0A  public URLClassLoader(URL%5B%5D urls, ClassLoader parent) %7B%0A    super(parent);%0A    if(urls.length != 1) %7B%0A      throw new UnsupportedOperationException();%0A    %7D%0A    if(!urls%5B0%5D.getProtocol().equals(%22file%22)) %7B%0A      throw new UnsupportedOperationException(urls%5B0%5D.getProtocol());%0A    %7D%0A    this.jarFile = new File(urls%5B0%5D.getFile());%0A  %7D%0A%0A%0A  protected Class findClass(String name) throws ClassNotFoundException %7B%0A    try %7B%0A      InputStream stream = getResourceAsStream(name.replace(%22.%22, %22/%22) + %22.class%22);%0A      if(stream == null) %7B%0A        throw new ClassNotFoundException(%22couldn't find class %22 + name);%0A      %7D%0A      byte%5B%5D buf = new byte%5B2048%5D;%0A      ByteArrayOutputStream mem = new ByteArrayOutputStream();%0A      try %7B%0A        int size;%0A        while((size = stream.read(buf, 0, buf.length)) %3E 0) %7B%0A          mem.write(buf, 0, size);%0A        %7D%0A        byte%5B%5D data = mem.toByteArray();%0A        return defineClass(name, data, 0, data.length);%0A      %7D finally %7B%0A        stream.close();%0A      %7D%0A    %7D catch(IOException e) %7B%0A      throw new ClassNotFoundException(%22couldn't find class %22 + name, e);%0A    %7D%0A  %7D%0A%0A  public URL getResource(String path) %7B%0A    try %7B%0A      return new URL(%22jar:file:%22 + jarFile.getAbsolutePath() + %22!/%22 + path);%0A    %7D catch(MalformedURLException e) %7B%0A      throw new RuntimeException(e);%0A    %7D%0A  %7D%0A%0A%0A%7D

add basic URLClassLoader implementation