12
返回列表 发新帖
楼主: hanyeung

请教高手一个关于URLClassLoader的问题

[复制链接]
论坛徽章:
0
11#
发表于 2010-7-15 16:18 | 只看该作者
曾经写的一个eclipse插件有使用到此功能,并写了个装载的工具类,请参考

/**
*
*/
package com.flex.object.build.util;

import java.io.IOException;
import java.io.RandomAccessFile;

/**
* @author hualee
*
*/
public class CupClassLoader extends ClassLoader {
       
         /**class的build目录,或class的存放目录*/
         private String location = null;

          public CupClassLoader(ClassLoader arg0)
          {
            super(arg0);
          }

          protected CupClassLoader()
          {
            super();
          }

          /**
           * 装载编译过的class文件,生成Class返回
           */
          public Class findClass(String name)
          {
             byte[] b = loadClassData(name);
             return defineClass(name, b, 0, b.length);
          }

          /**
           * 装载编译过的class文件,返回byte流
           * @param fileName
           * @return
           */
          public byte[] loadClassData(String fileName)
          
          {
                 String[] ss = fileName.split("\\.");
                 String files = "";
                 for(int i=0;i<ss.length;i++){
                         files =files+"\\"+ss;
                 }
                 files = files.substring(1);
                 
             try {
                    // System.out.println(location +files+ ".class");
                  RandomAccessFile file = new RandomAccessFile(location +"\\"+files+ ".class","r");
                  byte data[] = new byte[(int)file.length()];
                  file.readFully(data);
                  file.close();
                  return data;
             } catch (IOException e)
             {
                     e.printStackTrace();
             } catch (Exception ex)
             {
                     ex.printStackTrace();
             }
           return null;
          }

          /**
           * 设置load class的存放目录
           * @param path
           */
          public void setClassLocation(String path)
          {
           location = path;
          }
       

}

使用道具 举报

回复
论坛徽章:
91
金色在线徽章
日期:2007-09-28 04:03:18路虎
日期:2015-02-13 14:16:39玉兔
日期:2010-07-28 10:40:59嫦娥
日期:2010-07-28 10:39:56玉石琵琶
日期:2010-07-28 11:01:19红孩儿
日期:2010-07-28 14:07:02铁扇公主
日期:2010-07-28 10:41:40NBA季后赛大富翁
日期:2013-05-15 15:16:32在线时间
日期:2006-12-26 04:01:012010年世界杯参赛球队:西班牙
日期:2010-07-07 13:40:07
12#
发表于 2010-7-16 16:05 | 只看该作者
原帖由 hualee 于 2010-7-15 16:18 发表
曾经写的一个eclipse插件有使用到此功能,并写了个装载的工具类,请参考

/**
*
*/
package com.flex.object.build.util;

import java.io.IOException;
import java.io.RandomAccessFile;

/**
* @author hualee
*
*/
public class CupClassLoader extends ClassLoader {
       
         /**class的build目录,或class的存放目录*/
         private String location = null;

          public CupClassLoader(ClassLoader arg0)
          {
            super(arg0);
          }

          protected CupClassLoader()
          {
            super();
          }

          /**
           * 装载编译过的class文件,生成Class返回
           */
          public Class findClass(String name)
          {
             byte[] b = loadClassData(name);
             return defineClass(name, b, 0, b.length);
          }

          /**
           * 装载编译过的class文件,返回byte流
           * @param fileName
           * @return
           */
          public byte[] loadClassData(String fileName)
          
          {
                 String[] ss = fileName.split("\\.";
                 String files = "";
                 for(int i=0;i


使用道具 举报

回复
论坛徽章:
131
乌索普
日期:2017-09-26 13:06:30马上加薪
日期:2014-11-22 01:34:242014年世界杯参赛球队: 尼日利亚
日期:2014-06-17 15:23:23马上有对象
日期:2014-05-11 19:35:172014年新春福章
日期:2014-04-04 16:16:58马上有对象
日期:2014-03-08 16:50:54马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
13#
发表于 2010-7-16 23:59 | 只看该作者
呵呵

使用道具 举报

回复
论坛徽章:
129
2015年新春福章
日期:2015-03-06 11:57:31ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26ITPUB9周年纪念徽章
日期:2010-10-08 09:32:262010世博会纪念徽章
日期:2010-10-05 15:55:362010广州亚运会纪念徽章:手球
日期:2010-09-15 22:46:19设计板块每日发贴之星
日期:2010-07-23 01:01:01行业板块每日发贴之星
日期:2010-07-22 01:01:04开发板块每日发贴之星
日期:2010-07-22 01:01:04
14#
发表于 2010-7-18 23:59 | 只看该作者
原帖由 hualee 于 2010-7-15 16:18 发表
曾经写的一个eclipse插件有使用到此功能,并写了个装载的工具类,请参考

/**
*
*/
package com.flex.object.build.util;

import java.io.IOException;
import java.io.RandomAccessFile;

/**
* @author hualee
*
*/
public class CupClassLoader extends ClassLoader {
       
         /**class的build目录,或class的存放目录*/
         private String location = null;

          public CupClassLoader(ClassLoader arg0)
          {
            super(arg0);
          }

          protected CupClassLoader()
          {
            super();
          }

          /**
           * 装载编译过的class文件,生成Class返回
           */
          public Class findClass(String name)
          {
             byte[] b = loadClassData(name);
             return defineClass(name, b, 0, b.length);
          }

          /**
           * 装载编译过的class文件,返回byte流
           * @param fileName
           * @return
           */
          public byte[] loadClassData(String fileName)
          
          {
                 String[] ss = fileName.split("\\.");
                 String files = "";
                 for(int i=0;i


cool 学习一下

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表