This patch was checked in to gcc.gnu.org on Sep 18 2003

--- libjava/javax/naming/spi/NamingManager.java.bak	2003-09-18 15:39:43.000000000 -0600
+++ libjava/javax/naming/spi/NamingManager.java	2003-09-18 15:39:45.000000000 -0600
@@ -1,5 +1,5 @@
 /* NamingManager.java --
-   Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -83,13 +83,17 @@
 
 	try
 	  {
-	    icf = (InitialContextFactory) Class.forName (java_naming_factory_initial).newInstance ();
+	    icf = (InitialContextFactory)Class.forName
+		(java_naming_factory_initial, true,
+		 Thread.currentThread().getContextClassLoader())
+		.newInstance ();
 	  }
 	catch (Exception exception)
 	  {
 	    NoInitialContextException e
-	      = new NoInitialContextException ("Can't load InitialContextFactory class: "
-					       + java_naming_factory_initial);
+	      = new NoInitialContextException
+	      ("Can't load InitialContextFactory class: "
+	       + java_naming_factory_initial);
 	    e.setRootCause(exception);
 	    throw e;
 	  }
@@ -117,7 +121,7 @@
 	prefixes = "com.sun.jndi.url";
       }
 
-    scheme += "URLContextFactory";
+    scheme = scheme + "." + scheme + "URLContextFactory";
 
     StringTokenizer tokens = new StringTokenizer (prefixes, ":");
     while (tokens.hasMoreTokens ())
@@ -125,7 +129,9 @@
 	String aTry = tokens.nextToken ();
 	try
 	  {
-	    Class factoryClass = Class.forName (aTry + "." + scheme);
+	    Class factoryClass = Class.forName (aTry + "." + scheme,
+						true,
+						Thread.currentThread().getContextClassLoader());
 	    ObjectFactory factory =
 	      (ObjectFactory) factoryClass.newInstance ();
 	    Object obj = factory.getObjectInstance (refInfo, name,
@@ -227,7 +233,9 @@
 	    if (fClass != null)
 	      {
 		// Exceptions here are passed to the caller.
-		Class k = Class.forName (fClass);
+		Class k = Class.forName (fClass,
+					 true,
+					 Thread.currentThread().getContextClassLoader());
 		factory = (ObjectFactory) k.newInstance ();
 	      }
 	    else
@@ -271,7 +279,9 @@
 	    while (tokens.hasMoreTokens ())
 	      {
 		String klassName = tokens.nextToken ();
-		Class k = Class.forName (klassName);
+		Class k = Class.forName (klassName,
+					 true,
+					 Thread.currentThread().getContextClassLoader());
 		factory = (ObjectFactory) k.newInstance ();
 		Object obj = factory.getObjectInstance (refInfo, name,
 							nameCtx, environment);
@@ -337,7 +347,9 @@
 	String klassName = tokens.nextToken ();
 	try
 	  {
-	    Class k = Class.forName (klassName);
+	    Class k = Class.forName (klassName,
+				     true,
+				     Thread.currentThread().getContextClassLoader());
 	    StateFactory factory = (StateFactory) k.newInstance ();
 	    Object o = factory.getStateToBind (obj, name, nameCtx,
 					       environment);
