/** * Licensed under the Artistic License; you may not use this file * except in compliance with the License. * You may obtain a copy of the License at * * http://displaytag.sourceforge.net/license.html * * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ package org.displaytag.util; /** * Utility method for reflection. * @author Fabrizio Giustina * @version $Revision$ ($Author$) */ public final class ReflectHelper { /** * Don't instantiate. */ private ReflectHelper() { // unused } /** * Tries to load a class with more classloaders. Can be useful in J2EE applications if jar is loaded from a * different classloader than user classes. If class is not found using the standard classloader, tries whit the * thread classloader. * @param className class name * @return Class loaded class * @throws ClassNotFoundException if none of the ClassLoaders is able to found the reuested class */ public static Class< ? > classForName(String className) throws ClassNotFoundException { try { // trying with the default ClassLoader return Class.forName(className); } catch (ClassNotFoundException cnfe) { try { // trying with thread ClassLoader Thread thread = Thread.currentThread(); ClassLoader threadClassLoader = thread.getContextClassLoader(); return Class.forName(className, false, threadClassLoader); } catch (ClassNotFoundException cnfe2) { throw cnfe2; } } } }