import java.io.FileInputStream;
import java.io.IOException;
import java.lang.reflect.Method;
class MyClassLoader extends ClassLoader {
public Class findClass(String name) {
byte[] classData = null;
try {
FileInputStream f = new FileInputStream("C:\\" + name + ".class");
int num = f.available();
classData = new byte[num];
f.read(classData);
} catch (IOException e) {
System.out.println(e);
}
Class x = defineClass(name, classData, 0, classData.length);
return x;
}
}
public class MainClass {
static public void main(String args[]) throws Exception {
MyClassLoader x = new MyClassLoader();
Class c = x.loadClass(args[0]);
Class getArg1[] = { (new String[1]).getClass() };
Method m = c.getMethod("main", getArg1);
String[] my1 = { "arg1 passed", "arg2 passed" };
Object myarg1[] = { my1 };
m.invoke(null, myarg1);
}
}
分享到:
相关推荐
这种设计遵循了**委托模式**,即自定义类加载器在尝试加载类之前会先询问其父加载器是否能加载该类,只有在父加载器无法加载时才会尝试自己加载。 #### 八、类的卸载与重载 1. **卸载**: Java类一旦被加载到JVM中...
类加载器的设计遵循双亲委派模型,它分为三个主要部分:启动类加载器、扩展类加载器和应用类加载器。 #### 二、类加载过程 类加载过程主要包括三个步骤: 1. **加载**:通过类的全限定名找到该类的二进制字节流。...
类加载器的工作机制遵循“双亲委派模型”:当一个类加载器接收到加载类的请求时,它首先会委托父加载器去尝试加载,只有在父加载器无法加载的情况下,子加载器才会尝试自己去加载。这种设计可以防止类的重复加载,并...
- 类加载器实例的线程安全性:如果你的类加载器需要处理多线程环境,需要确保其设计是线程安全的。 - 类的唯一性:类加载器与类的关系是“一对多”,同一类加载器下的类名必须唯一,不同类加载器加载的同名类不...
类加载器遵循双亲委派模型,这意味着当一个类加载器尝试加载类时,它首先会将请求委托给其父类加载器,直到到达顶层的Bootstrap ClassLoader,如果父类加载器无法找到该类,子类加载器才会尝试自己加载。 在Tomcat...
当一个类加载器接收到加载类的请求时,它首先会委托其父加载器尝试加载,只有当父加载器无法找到对应的类时,才会尝试自己加载。这种设计确保了类的唯一性,防止类的重复加载和安全问题。 ### 自定义类加载器的创建...
- **自定义类加载器(User-defined ClassLoader)**:用户可以根据需求编写自己的类加载器,实现特定的加载逻辑。 3. **双亲委派模型** 类加载器之间存在层次结构,当一个类加载器接收到加载类的请求时,它会先...
系统类加载器在加载类时,会先尝试让扩展类加载器加载,如果扩展类加载器无法加载,则再由系统类加载器自己尝试加载。这样的设计是为了保证核心类库的唯一性和安全性,避免用户自定义的类覆盖了 JDK 内置的核心类。 ...
- 自定义类加载器:开发者可以根据需求创建自己的类加载器。 3. 双亲委派模型: 这是一种防止类被重复加载的机制。当一个类加载器收到加载类的请求时,它首先会委托父类加载器去尝试加载,只有当父类加载器无法...
总的来说,自定义Java类加载器是深入理解和控制JVM行为的重要手段,它可以让我们在程序设计中实现更高级别的灵活性和定制性。通过`MyClassLoader`,你可以按照个人需求来调整类的加载策略,进一步提升软件系统的功能...
Tomcat的类加载器设计更加复杂,主要由以下几种类加载器组成: 1. Common ClassLoader:加载`common.loader`属性指定的类,通常包含全局共享的库。 2. Webapp ClassLoader:每个Web应用程序都有自己的Webapp ...
Java应用程序类加载器是Java平台的核心组成部分之一,它负责加载应用程序中的类到JVM(Java虚拟机)中,使得程序能够执行。...理解并掌握类加载器的工作原理,能帮助我们更好地设计和优化Java应用。
类加载器的学习是深入理解Java运行机制的关键,尤其对于系统级开发和框架设计而言更是如此。本文将主要围绕“黑马程序员------类加载器学习注意点”展开,探讨一些关键知识点。 首先,我们需要理解类加载器的基本...
当一个类加载器接收到加载类的请求时,它首先会委托父类加载器尝试加载,只有当父类加载器无法加载时,当前类加载器才会尝试自己加载。这样设计的目的是保证Java核心类库的稳定性,防止用户自定义类覆盖系统核心类。...
本节将详细介绍一个编译类加载器的设计与实现。编译类加载器是一种特殊的类加载器,它在加载类之前会先对源代码进行编译。这种类型的类加载器对于那些需要在运行时动态生成或修改代码的应用场景非常有用。 #### 五...
Tomcat的类加载器设计遵循了Java的双亲委派模型,但又在其基础上进行了一些定制,以满足Web应用程序的特定需求。 首先,Tomcat的类加载器层次结构由Bootstrap类加载器、Common类加载器、Shared类加载器和Web应用...
【深入探讨 Java 类加载器】 Java 类加载器是Java虚拟机(JVM)的核心组成部分,它的主要任务是将Java类的字节码加载到JVM中以便执行...无论是解决运行时问题还是设计复杂的系统架构,都需要对类加载器有深刻的认识。
- **用户自定义类加载器**:开发者可以根据需要创建自己的类加载器,通常继承自`ClassLoader`类。 2. 类加载器作用: - **加载Class文件**:从磁盘、网络或其他来源加载字节码到JVM内存。 - **资源加载**:类...
OSGi(Open Service Gateway Initiative)框架使用类加载器实现模块化,每个模块(Bundle)都有自己的类加载器,允许模块间的类隔离和动态加载。 总结,Java类加载器是Java平台的关键组成部分,它不仅实现了类的...
该模型要求每个类加载器除了顶层的启动类加载器外,都应该有自己的父类加载器。这种父子关系不是通过继承关系建立的,而是通过组合的方式实现。双亲委托模型的工作流程如下: 1. **请求处理**:当一个类加载器接收...