`
yuancihang
  • 浏览: 145165 次
  • 性别: Icon_minigender_1
  • 来自: 洛阳
社区版块
存档分类
最新评论

自定义类加载器 一

 
阅读更多

package com.yuan.common.asm;

public abstract class AbstractClassLoader extends ClassLoader {
   
    public AbstractClassLoader(ClassLoader parent){
        super(parent);
    }
   
    protected String getPackageName(String className){
        String packageName = "";
        int index = className.lastIndexOf(".");
        if(index != -1){
            packageName = className.substring(0, index);
        }
        return packageName;
    }
   
    protected Class<?> findClass(String name)throws ClassNotFoundException{
        String packageName = getPackageName(name);
        if(super.getPackage(packageName) == null){
            super.definePackage(packageName, packageName, "1.0", "hx", packageName, "1.0", "hx", null);
        }
        try {
            return this.getParent().loadClass(name);
        } catch (Exception e) {
            byte[] b = loadClassData(name);
            return defineClass(name, b, 0, b.length);
        }
       
    }
   
    protected abstract byte[] loadClassData(String name) throws ClassNotFoundException;

}

分享到:
评论

相关推荐

    自定义类加载器实现自定义加载

    在Java编程语言中,类加载器(ClassLoader)是运行时环境...理解类加载机制并正确实现自定义加载器是提升Java应用开发能力的重要一步。在实际项目中,合理利用类加载器可以解决很多复杂问题,比如模块化、动态更新等。

    自定义类加载器

    本文将深入探讨自定义类加载器的基本概念、工作原理以及如何创建一个简单的基于磁盘的自定义类加载器。 ### 类加载器的层次结构 Java中的类加载器通常形成一个树状的层次结构,其中Bootstrap ClassLoader是最顶层...

    自定义Java类加载器

    - **安全沙箱**:每个加载器都有自己的命名空间,可以通过自定义加载器限制代码访问权限。 - **插件系统**:插件有自己的类加载器,使得插件可以独立于主程序加载和卸载。 在编写`MyClassLoader`时,需要注意的是,...

    3-7Tomcat中自定义类加载器的使用与源码实现(1).mp4

    3-7Tomcat中自定义类加载器的使用与源码实现(1).mp4

    Java加壳源码-自定义类加载器

    Java加壳技术是一种保护Java程序不被轻易反编译或篡改的安全手段,它通过自定义类加载器来实现对原始字节码的包装。在Java中,类加载器是负责加载类到JVM(Java虚拟机)的核心组件。自定义类加载器允许开发者根据...

    java类加载器学习二、自定义类加载器

    java类加载器学习二、自定义类加载器

    自定义类加载代码

    要实现一个自定义类加载器,你需要继承`java.lang.ClassLoader`类,并重写其关键方法`findClass(String name)`。这个方法接收全限定类名作为参数,返回加载后的`Class`对象。在`findClass`中,你需要实现查找和读取...

    Java基于自定义类加载器实现热部署过程解析

    为了实现热部署,需要使用自定义的ClassLoader替换系统的加载器,创建一个新的ClassLoader,再用它加载Class,得到的Class对象就是新的(因为不是同一个类加载器),再用该Class对象创建一个实例,从而实现动态更新...

    ClassLoader类加载器

    当一个类被加载时,如果它的父类加载器无法加载该类,那么会将任务委派给子类加载器。这就是著名的"委托模型"。 ClassLoader的主要方法包括: 1. `loadClass(String className)`: 加载指定名称的类,返回Class对象...

    tomcat类加载器

    这个"DevLoader.zip"文件可能包含与Tomcat自定义类加载器相关的资料,特别是名为"DevLoader"的类加载器,这可能是Tomcat为开发者提供的一种特殊加载器。 首先,我们来理解一下类加载器的基本概念。在Java中,类加载...

    Java实现的自定义类加载器示例

    Java 实现的自定义类加载器是 Java 语言中的一种机制,允许开发者自定义类加载器,以满足特定的需求。本文将详细介绍 Java 实现的自定义类加载器的原理和实现技巧。 ClassLoader 类 在 Java 中,ClassLoader 是一...

    java自定义类加载classloader文档,包括代码

    1. **Bootstrap Class Loader(启动类加载器)**:该类加载器使用C++编写,是JVM自身的一部分,用于加载位于`JAVA_HOME/jre/lib/rt.jar`中的类库,以及其他一些核心类库(如`java.lang.*`等)。Bootstrap Class ...

    类加载器文件

    自定义类加载器时,需要继承`java.lang.ClassLoader`或其子类,并指定一个父加载器。如果没有指定,则默认使用`ClassLoader.getSystemClassLoader()`作为父加载器。这种设计遵循了**委托模式**,即自定义类加载器在...

    java自定义类加载器代码示例

    Java自定义类加载器代码示例是一种使用Java语言实现的类加载器示例,主要用于加载Java类文件。类加载器是Java虚拟机(JVM)中的一种机制,用于将Java类文件加载到JVM中,以便JVM可以正确地执行Java程序。 在Java中...

    java 类加载与自定义类加载器详解

    自定义加载器需要重写`findClass()`或`loadClass()`方法。在`MyClassLoader2`示例中,它尝试从指定路径查找类的字节码文件,并通过`defineClass()`方法将字节码转换为Class对象。 ```java public Class&lt;?&gt; find...

    Java类加载器原理

    1. 类加载器作用: 当JVM启动时,如果需要使用某个类,对应的类加载器会将这个类的字节码加载到内存中。类加载器的主要任务是动态加载和管理类,使得程序可以在运行时发现和使用新的类。此外,类加载器具有缓存机制...

    JVM类加载器说明文档

    1. 类冲突:当多个类加载器加载同一个类时,如果没有遵循双亲委派机制,可能导致类的多个副本存在于不同加载器的命名空间中,引起类冲突问题。 2. 安全性问题:如果允许用户自定义类加载器任意加载代码,可能会破坏...

    java类加载器

    1. **引导类加载器(Bootstrap Class Loader)**:这是JVM启动时的第一个加载器,负责加载`rt.jar`中的核心类,例如`java.lang.Object`。由于它是内置于JVM的,因此在API文档中没有直接描述,返回`null`给`...

    java 类加载器 加密

    在这个例子中,`EncryptedClassLoader`是我们的自定义加载器,它覆盖了`findClass`方法以处理加密的类。`main`方法中,我们使用`Class.forName`加载类,并传入我们的自定义类加载器。找到main方法后,通过反射调用它...

    3-7Tomcat中自定义类加载器的使用与源码实现(2).mp4

    3-7Tomcat中自定义类加载器的使用与源码实现(2).mp4

Global site tag (gtag.js) - Google Analytics