package cz.cuni.lf1.lge.ThunderSTORM;
import java.net.URL;
import java.net.URLClassLoader;
/**
* A classloader that tries to load a class from the same jar before delegating
* to parent classloader.
*/
public class JarFirstClassLoader extends URLClassLoader {
private static JarFirstClassLoader instance = new JarFirstClassLoader();
private JarFirstClassLoader() {
super(new URL[]{JarFirstClassLoader.class.getProtectionDomain().getCodeSource().getLocation()}, JarFirstClassLoader.class.getClassLoader());
}
public static JarFirstClassLoader getInstance() {
return instance;
}
@Override
public Class<?> loadClass(String name) throws ClassNotFoundException {
Class<?> c = findLoadedClass(name);
if(c == null) {
try {
c = findClass(name);
return c;
} catch(ClassNotFoundException ex) {
return super.loadClass(name);
}
} else {
return c;
}
}
}