import java.net.*;
import java.security.*;

public class testSM
{
	public static class mytest
	{
		public mytest()
		{
		}
	}

	static class MySM extends SecurityManager
	{
		public void checkPermission(java.security.Permission perm)
		{
			if (perm.getName().equals("charsetProvider")) return;
			System.err.println("perm.getName()=" + perm);
			try
			{
				System.out.println(Class.forName("java.util.Vector"));
			}
			catch (Exception x)
			{
				x.printStackTrace();
			}
		}
	}

	static public void main(String args[]) throws Exception
	{
		//Class sc = SecurityManager.class;
		//Class sc2 = Security.class;
		//Class sc3 = java.security.Permission.class;
		//Class sc4 = java.lang.StringBuffer.class;
		//Class sc5 = java.io.PrintStream.class;


		System.setSecurityManager(new MySM());
		
		URLClassLoader cl = (URLClassLoader)testSM.class.getClassLoader();
		URLClassLoader cl2 = new URLClassLoader(cl.getURLs(), new ClassLoader() {
                   public Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
                       if (name.equals("testSM$mytest"))
                         throw new ClassNotFoundException();
                       return super.loadClass(name, resolve);
                   }
                });
		Class c = Class.forName("testSM$mytest", true, cl2);

		c.newInstance();

                System.out.println("Done");
	}
}
