浏览 1190 次
锁定老帖子 主题:任意路径下的加载类
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2009-08-17
说到通过发射获得类的信息大家自然想到了用Class.forName("xxxxx.xxx.xx");但是这种方法只能加载已经加载到 jvm的类;那么如果类没有被加载到jvm,而现在又要获得一个类的信息,而且该类可能位于任何路径,那应该如果做呢?方法是利用URLClassLoader的loadClass方法;demo路径如下:
public static void main(String[] args) { File file=new File("D:/temp"); URL url=null; try { url = file.toURL(); System.out.println("url--"+url.getPath()); URL[] urls={url}; URLClassLoader classLoader=new URLClassLoader(urls); Class class1=classLoader.loadClass("com.skywin.mps.web.servlet.SpServlet"); System.out.println("ClassName"+class1.getName()); Class paramClass[]={}; Method methods[]=class1.getDeclaredMethods(); for (int i = 0; i < methods.length; i++) { Method tm=methods[i]; System.out.println(tm.getName()); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 前提是把上述的spservlet的class文件(包括包结构)放到d盘的temp目录下 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |