`
1enny
  • 浏览: 70623 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

类加载器的深入讲解与应用

 
阅读更多


第8单元:类加载器的深入讲解与应用

第8单元:类加载器的深入讲解与应用


第8单元:类加载器的深入讲解与应用
44.类加载器及其委托机制的深入分析

package java_5;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class MyClassLoader extends ClassLoader {
    static String srcPath;
    static String destPath;

    public static void main(String[] args) throws Exception {
          srcPath = args[0];
          destPath = args[1];
         InputStream in = new FileInputStream(srcPath );
          srcPath = srcPath .substring(0, srcPath.lastIndexOf('\\' ) - 6);
         OutputStream out = new FileOutputStream(srcPath + "\\" + destPath
                 + ".class");
         ClassLoader cl = MyClassLoader.class .getClassLoader().getParent();
        System. out.println(cl.getClass().getName());
          addSecrity(out, in);
    }

    public static void addSecrity(OutputStream dest, InputStream src)
              throws IOException {
          int b = 0;
          while ((b = src.read()) != -1) {
             b = b ^ 0xff;
             dest.write(b);
         }

    }

    @Override
    protected java.lang.Class<?> findClass(String name)
              throws ClassNotFoundException {
         String srcPath = "G:\\workplace\\javase\\lib\\" ;
         InputStream in = null;
          try {
             in = new FileInputStream(srcPath+name+".class" );
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         }
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
          try {
              addSecrity(baos,in);
         } catch (IOException e) {
             e.printStackTrace();
         }
          byte[] bytes = baos.toByteArray();
          Class clazz = defineClass (bytes, 0, bytes.length );
          return clazz;
    };

    private String name;

    public MyClassLoader() {
    }

    public MyClassLoader(String name) {
          this.name = name;
    }

}


有包名的类不能调用无包名的类


分享到:
评论

相关推荐

    深入理解java类加载机制

    此外,我们还会探讨Java程序的类加载器和双亲委派机制,以及自定义类加载器和类卸载的实现原理和应用方法。 总的来说,本资源将为Java程序员提供全面的Java字节码和类加载原理和实践经验。通过学习本资源,开发人员将...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    第二部分详细讲解了jsf ri、jta、jndi、rmi、jms、javamail、ejb 3的session bean、message driven bean、jpa、jax-ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具...

    uifuture-ssm:SSM书籍中对应的项目讲解与

    2.1-类加载器 ssm-classLoader项目地址: : 2.2-反射机制 ssm-reflection-demo项目地址: : 2.3-动态代理 ssm-proxy项目地址: : 3-设计模式 ssm-design-pattern项目地址: : 5SpringMVC基础演示项目 6-深入...

    Java虚拟机

    7.4.1 类与类加载器 7.4.2 双亲委派模型 7.4.3 破坏双亲委派模型 7.5 本章小结 第8章 虚拟机字节码执行引擎 8.1 概述 8.2 运行时栈帧结构 8.2.1 局部变量表 8.2.2 操作数栈 8.2.3 动态连接 8.2.4 方法...

    vc++ 应用源码包_1

    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第二阶段49讲、自定义类加载器ClassLoader顺便问候了一下世界.mp4 │ 高并发编程第二阶段50讲、ClassLoader父委托机制详细介绍.mp4 │ 高并发编程第二阶段51讲、加密解密类加载实战演示.mp4 │ 高...

    vc++ 应用源码包_2

    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...

    vc++ 应用源码包_6

    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...

    vc++ 应用源码包_3

    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...

    vc++ 应用源码包_5

    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    实例变量与类变量 类变量的作用及析构函数 类的继承 经典类与新式类的继承顺序 继承实例讲解 多态实例讲解 本节作业之选课系统开发 第7周 心灵分享 上节回顾 静态方法、类方法、属性方法 课堂扯淡 深入讲解类的...

    JAVA高并发高性能高可用高扩展架构视频教程

    类加载器的高级特性(自定义类加器实现加密解密) iBATIS开源主流框架(实现半自动化hibernate) 企业实用技能之详解(眼睛横纹模式验证码防止恶意登陆) 动态页面的静态化处理 图片上传技术 在springMVC中实现原始的Excel...

    Windows内部原理(十一):存储和文件系统

    Windows的启动是一个复杂的过程,从加载器(NTLDR或WinLoad)开始工作到Windows子系统准备就绪,中间经历了若干个复杂的步骤,包括内核和执行体的初始化,创建系统进程和线程,对象管理器初始化基本对象,I/O管理器...

    [Windows.PE权威指南].戚利.扫描版.part1

    深入分析了pe文件头、导入表、导出表、重定位表、资源表、延迟导入表、线程局部存储、加载配置信息等核心技术的概念、原理及其编程方法,有针对性地讲解了程序设计中的重定位、程序堆栈、动态加载等;第二部分讨论了...

    全方位深入解析最新版SpringBoot源码.txt

    最后为了香车美女,海景别墅,让源码为实力代言~ ...1-1 实力护航:用SpringBoot源码为实力代言 试看第2章 全局流程解析【一图胜千言,一探启动加载器之魅力】本章开篇就直奔主题:动手进行开发环境搭建;...

    Windows PE权威指南 高清pdf 带书签 带源码

    涉及安全领域的各个方面和Windows系统的进程管理和底层机制:实战性强,以案例驱动的方式讲解了Windows PE文件格式在加密与解密、软件汉化、逆向工程、反病毒等安全领域的应用,不仅每个知识点都配有小案例,而且...

Global site tag (gtag.js) - Google Analytics