package com.openkm.util.cl;
import java.io.IOException;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.jar.Attributes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class JarClassLoader extends URLClassLoader implements MultipleClassLoader {
private static Logger log = LoggerFactory.getLogger(JarClassLoader.class);
private URL url;
public JarClassLoader(URL url) {
super(new URL[] { url });
this.url = url;
}
public JarClassLoader(URL url, ClassLoader parent) {
super(new URL[] { url }, parent);
this.url = url;
}
@Override
public String getMainClassName() throws IOException {
log.debug("getMainClassName()");
URL u = new URL("jar", "", url + "!/");
JarURLConnection uc = (JarURLConnection) u.openConnection();
Attributes attr = uc.getMainAttributes();
return attr != null ? attr.getValue(Attributes.Name.MAIN_CLASS) : null;
}
}