2 * Test that classloader can properly supply exceptions.
4 * This test needs ExceptionTest.java
6 * @author Benjamin Reed <breed@almaden.ibm.com>
10 import java.lang.reflect.*;
12 public class ExceptionTestClassLoader extends ClassLoader {
13 private Class myLoadClass( String name ) throws ClassNotFoundException {
15 if ( name.equals( "ExceptionTest" ) ) {
16 File file = new File( "ExceptionTest" );
17 FileInputStream fis = new FileInputStream( file );
18 byte buffer[] = new byte[(int)file.length()];
20 while( size < file.length() ) {
21 int rc = fis.read( buffer, size, (int)file.length() - size );
24 return defineClass( null, buffer, 0, size );
26 } catch( Exception e ) {}
27 throw new ClassNotFoundException( name );
30 protected Class loadClass( String name, boolean resolve ) throws ClassNotFoundException {
31 if (name.equals("java.lang.Exception")) {
32 System.out.println("Success 2.");
34 Class theclass = findLoadedClass( name );
35 if ( theclass == null ) {
37 theclass = findSystemClass( name );
38 } catch( Exception e ) { // Yes Exception is a bit too general
39 theclass = myLoadClass( name );
42 if ( theclass != null && resolve ) {
43 resolveClass( theclass );
48 public static void main( String args[] ) {
49 new File("ExceptionTest.class").renameTo(new File("ExceptionTest"));
50 Vector v = new Vector();
51 ClassLoader cl = new ExceptionTestClassLoader();
53 Class classArgs[] = new Class[1];
54 classArgs[0] = String.class;
56 cl.loadClass( "ExceptionTest" ).getConstructor( classArgs );
57 Object instArgs[] = new Object[1];
59 con.newInstance( instArgs );
60 } catch ( Exception e ) {
63 System.out.println("Success 5.");