Mega Code Archive

 
Categories / Java Tutorial / File
 

Return the specified class Checks the ThreadContext classloader first, then uses the System classloader

/*  * Copyright  2003-2008 The Apache Software Foundation.  *  *  Licensed under the Apache License, Version 2.0 (the "License");  *  you may not use this file except in compliance with the License.  *  You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0  *  *  Unless required by applicable law or agreed to in writing, software  *  distributed under the License is distributed on an "AS IS" BASIS,  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  *  See the License for the specific language governing permissions and  *  limitations under the License.  *  */ import java.io.InputStream; /**  *  *  @author <a href="mailto:wglass@apache.org">Will Glass-Husain</a>  *  @version $Id: ClassUtils.java 685685 2008-08-13 21:43:27Z nbubna $  * @since 1.5  */ public class Main {   /**    * Return the specified class.  Checks the ThreadContext classloader first,    * then uses the System classloader.  Should replace all calls to    * <code>Class.forName( claz )</code> (which only calls the System class    * loader) when the class might be in a different classloader (e.g. in a    * webapp).    *    * @param clazz the name of the class to instantiate    * @return the requested Class object    * @throws ClassNotFoundException    */   public static Class getClass(String clazz) throws ClassNotFoundException   {       /**        * Use the Thread context classloader if possible        */       ClassLoader loader = Thread.currentThread().getContextClassLoader();       if (loader != null)       {           try           {               return Class.forName(clazz, true, loader);           }           catch (ClassNotFoundException E)           {               /**                * If not found with ThreadContext loader, fall thru to                * try System classloader below (works around bug in ant).                */           }       }       /**        * Thread context classloader isn't working out, so use system loader.        */       return Class.forName(clazz);   } }