读书人

URLClassLoader例证

发布时间: 2012-12-27 10:17:10 作者: rapoo

URLClassLoader例子

学着写一个servlet服务器,里面对servlet的处理就得把那个servlet动态加载进来后,然后再去调用用它的service方法,这样就能实现了用户写的业务了。这里记录一个把类加载入来,然后执行这个类。用URLClassLoader来加载。

首先在src中写一个test类,或接口也可以:

package com.lr.test;public class test {public void show() {System.out.println("test:show()************************");}}

?

写要加载的类(因为这个类应该是用户写的,放在src外的文件夹中,像下图放在webroot文件夹中,
URLClassLoader例证
?继承的那个test是在文件夹src里的,就好像Servlet):

import com.lr.test.test;public class MyClass extends test {public void show() {System.out.println("MyClass:show() is test Loader!");}}

写一个测试类:

package com.lr.junit.MyServer02;import java.io.File;import java.net.URL;import java.net.URLClassLoader;import java.net.URLStreamHandler;import junit.framework.TestCase;import com.lr.test.test;public class testClassLoader extends TestCase {public void testLoader() throws Throwable, Exception {URL[] urls = new URL[1];URLStreamHandler streamHandler = null;File classPath = new File(System.getProperty("user.dir")+ File.separator + "webroot");String repository = (new URL("file", null, classPath.getCanonicalPath()+ File.separator)).toString();urls[0] = new URL(null, repository, streamHandler);URLClassLoader loader = new URLClassLoader(urls);// Class<?> myClass = loader.loadClass("MyClass");test t = (test) myClass.newInstance();// 实例化一个对象t.show();}}

?测试结果为:

MyClass:show() is test Loader!

?

读书人网 >编程

热点推荐