Object o = null; if ( cache != null ) o = cache.get( classPathKey ); if ( o != null ) return ( ClassLoader ) o; String classPath = System.getProperty( classPathKey ); if ( classPath == null || classPath.length( ) == 0 ) return null; String[] classPathArray = classPath.split( PROPERTYSEPARATOR, -1 ); URL[] urls = null; if ( classPathArray.length != 0 ) { List l = new ArrayList( ); for ( int i = 0; i < classPathArray.length; i++ ) { String cpValue = classPathArray[i]; File file = new File( cpValue ); try { l.add( file.toURL( ) ); } catch ( MalformedURLException e ) { e.printStackTrace( ); } } urls = ( URL[] ) l.toArray( new URL[l.size( )] ); }  if ( urls != null ) { ClassLoader cl = new URLClassLoader( urls, ExecutionContext.class .getClassLoader( ) ); if ( cache != null ) cache.put( classPathKey, cl ); return cl; } return null;
return getCustomClassLoader(classPathKey, cache, null);
	public static ClassLoader getCustomClassLoader( String classPathKey,			Map cache )	{		Object o = null;		if ( cache != null )			o = cache.get( classPathKey );		if ( o != null )			return ( ClassLoader ) o;		String classPath = System.getProperty( classPathKey );		if ( classPath == null || classPath.length( ) == 0 )			return null;		String[] classPathArray = classPath.split( PROPERTYSEPARATOR, -1 );		URL[] urls = null;		if ( classPathArray.length != 0 )		{			List l = new ArrayList( );			for ( int i = 0; i < classPathArray.length; i++ )			{				String cpValue = classPathArray[i];				File file = new File( cpValue );				try				{					l.add( file.toURL( ) );				} catch ( MalformedURLException e )				{					e.printStackTrace( );				}			}			urls = ( URL[] ) l.toArray( new URL[l.size( )] );		}		if ( urls != null )		{			ClassLoader cl = new URLClassLoader( urls, ExecutionContext.class					.getClassLoader( ) );			if ( cache != null )				cache.put( classPathKey, cl );			return cl;		}		return null;	}