在Tomcat中为什么创建类加载器后马上就Thread.currentThread().setContextClassLoader(catalinaLoader)?这里主要是为了避免后面加载类时加载失败。下面将举一个典型的例子说明如何利用URLClassLoader加载指定的jar包,并且解析由此引出的加载失败问题。
首先,定义一个提供服务的接口,并且打包成TestInterface.jar。
public interface TestInterface{
public String display();
}
其次,创建一个名为TestClassLoader的类,它实现TestInterface.jar包里面的TestInterface接口,包路径为com.test,该类包含一个display方法,将这个类编译并打包成test.jar包,放在D盘目录下。
public class TestClassLoader implements TestInterface{
public String display(){
return "I can load this class and execute the method.";
}
}
最后,就是利用URLClassLoader加载并运行TestClassLoader类的display方法。创建一个测试类,如下
p
首先,定义一个提供服务的接口,并且打包成TestInterface.jar。
public interface TestInterface{
public String display();
}
其次,创建一个名为TestClassLoader的类,它实现TestInterface.jar包里面的TestInterface接口,包路径为com.test,该类包含一个display方法,将这个类编译并打包成test.jar包,放在D盘目录下。
public class TestClassLoader implements TestInterface{
public String display(){
return "I can load this class and execute the method.";
}
}
最后,就是利用URLClassLoader加载并运行TestClassLoader类的display方法。创建一个测试类,如下
p