关于java代理类编写碰到的一些有关问题

关于java代理类编写碰到的一些问题
		Object[] elements = new Object[3];//定义存放代理对象的数组
	
   	  	ShapeProxyHandler proxyHandler1 = new ShapeProxyHandler(new Circle());
   	  	Object proxy1 = Proxy.newProxyInstance(null, new Class[] { Shape.class } , proxyHandler1);
	    elements[0] = proxy1;
	    


这段代码,其中Circle是我自己定义的本包的类,Shape是Cirlce的父类(抽象类)
执行的时候,出现如下错误

Exception in thread "main" java.lang.IllegalArgumentException: class reflect.Circle is not visible from class loader
at java.lang.reflect.Proxy.getProxyClass(Unknown Source)
at java.lang.reflect.Proxy.newProxyInstance(Unknown Source)
at reflect.ProxyTestShape.main(ProxyTestShape.java:13)

感觉是默认的类加载器,找不到这个reflect.Circle,查看Proxy的getProxy方法,看到这句代码
 String interfaceName = interfaces[i].getName();
	    Class interfaceClass = null;
	    try {
		interfaceClass = Class.forName(interfaceName, false, loader);
	    } catch (ClassNotFoundException e) {
	    }
	    if (interfaceClass != interfaces[i]) {
		throw new IllegalArgumentException(
		    interfaces[i] + " is not visible from class loader");
	    }

	    /*
	     * Verify that the Class object actually represents an
	     * interface.
	     */
	    if (!interfaceClass.isInterface()) {
		throw new IllegalArgumentException(
		    interfaceClass.getName() + " is not an interface");
	    }

应该是里面的这句
interfaceClass = Class.forName(interfaceName, false, loader);
和这句
  if (interfaceClass != interfaces[i]) {
throw new IllegalArgumentException(
    interfaces[i] + " is not visible from class loader");
    }


从代码来看,应该加载进来的interfaceClass 和我传递进去的Shape.class不一样,这个要怎么解决呢?是类加载器的问题吗?