ehanmqi@CN00202245 /C/Ericsson/maworkspace_15/Hello/lib
$ pwd
/C/Ericsson/maworkspace_15/Hello/lib
ehanmqi@CN00202245 /C/Ericsson/maworkspace_15/Hello/lib
$ ls -l
total 265
-rw-r--r-- 1 ehanmqi Administ 489884 Jun 16 15:27 log4j-1.2.17.jar
-rw-r--r-- 1 ehanmqi Administ 41071 Jun 16 15:24 slf4j-api-1.7.21.jar
-rw-r--r-- 1 ehanmqi Administ 9988 Jun 16 15:24 slf4j-log4j12-1.7.21.jar
import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import org.slf4j.Logger;
public class TestClassLoader2 {
private static Logger logger;
/**
* @param args
*/
public static void main(String[] args) {
try {
System.out.println(TestClassLoader2.class.getClassLoader());
//URL url = new File("C:/Users/ehanmqi/.m2/repository/org/slf4j/slf4j-log4j12/1.7.5/slf4j-log4j12-1.7.5.jar").toURI().toURL();
File file = new File("C:/Ericsson/maworkspace_15/Hello/lib");
URLClassLoader loader = loadJar(file.listFiles());
Class c = loader.loadClass("org.slf4j.LoggerFactory");
//c.getMethod("getLogger", Class.class).invoke(null, TestClassLoader2.class);
logger = (Logger) c.getMethod("getLogger", Class.class).invoke(null, TestClassLoader2.class);
logger.debug("sdfsf");
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static URLClassLoader loadJar(File[] fileArray) throws Exception{
URL[] urlarray = new URL[fileArray.length];
int i=0;
for(File f : fileArray){
URL url = f.toURI().toURL();
urlarray[i]=url;
i++;
}
URLClassLoader loader = new URLClassLoader(urlarray, TestClassLoader2.class.getClassLoader());
//loader.loadClass("org.apache.log4j.net.JMSSink");
for(File f : fileArray){
JarFile jarfile = new JarFile(f);
Enumeration<JarEntry> jarEntry = jarfile.entries();
while(jarEntry.hasMoreElements()){
JarEntry je = jarEntry.nextElement();
if(je.getName().endsWith(".class")){
//System.out.println(je.getName());
String classpath = je.getName().replaceAll("/", ".").replaceAll(".class", "");
if(!classpath.equals("org.apache.log4j.net.JMSSink")){
continue;
}else if(!classpath.equals("javax/mail/Authenticator".replace("/", "."))){
continue;
}
loader.loadClass(classpath);
}
}
}
return loader;
}
}