Java Class Loader loadClass(final File baseFolder, final String qualifiedType)

Here you can find the source of loadClass(final File baseFolder, final String qualifiedType)

Description

load Class

License

Open Source License

Declaration

public static Class<?> loadClass(final File baseFolder, final String qualifiedType) 

Method Source Code


//package com.java2s;
//License from project: Open Source License 

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

public class Main {
    private static final ReadWriteLock LOCK = new ReentrantReadWriteLock();
    private static final Map<File, ClassLoader> CLASSLOADER_MAP = new ConcurrentHashMap<>(16);

    public static Class<?> loadClass(final File baseFolder, final String qualifiedType) {
        try {//from  ww w  .  j  a  v  a2 s . c o m
            return getClassLoaderForDirectory(baseFolder).loadClass(qualifiedType);
        } catch (ClassNotFoundException | MalformedURLException e) {
            throw new IllegalStateException(e);
        }
    }

    private static ClassLoader getClassLoaderForDirectory(final File baseFolder) throws MalformedURLException {
        final Lock readLock = LOCK.readLock();
        readLock.lock();
        if (CLASSLOADER_MAP.containsKey(baseFolder)) {
            readLock.unlock();
            return CLASSLOADER_MAP.get(baseFolder);
        } else {
            final Lock writeLock = LOCK.writeLock();
            writeLock.lock();
            try {
                final URLClassLoader classLoader = URLClassLoader
                        .newInstance(new URL[] { baseFolder.toURI().toURL() });
                CLASSLOADER_MAP.put(baseFolder, classLoader);
                return classLoader;
            } finally {
                writeLock.unlock();
            }
        }
    }
}

Related

  1. load(String className)
  2. load(String path, String className)
  3. loadAllAutoConfigFiles(ClassLoader classloader)
  4. loadArrayClass(ClassLoader cl, String aName)
  5. loadClass(ClassLoader cl, String cName)
  6. loadClass(final File classFolder, final String className)
  7. loadClass(String className)
  8. loadClass(String className)
  9. loadClass(String dir, String classname)