`

Classloader加载类的问题探讨

阅读更多
首先在C:\Program Files\Java\jdk1.6.0_10\lib下面创建一个String类
查看classpath,发现java_home/lib其实就在classpath下面
(如果你)
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Helper {
	public static void main(java.lang.String []args){
			new Helper().read("String.class");
	}
	public void read(java.lang.String f){
		ClassLoader cl=this.getClass().getClassLoader();
		out(cl);
		out("---------");
		out(cl.getParent().getParent());
		out("---------");
//		out(ClassLoader.getBootstrapClassPath());
		InputStream in=cl.getResourceAsStream(f);
		int len=0;
		byte b[]=new byte[1023];
		if(in==null){
                      out("null");
                   }else
                  {
                   out("ok");
                   }
         new String().output();
       }
	public  void out(Object o){
		System.out.println(o);
	}
}

这样运行的是你自己的String的output方法
String.class可以在当前的classpath,或者在jdk、lib下面!
编译的时候 他就会在classpath中寻找需要加载的包
也就是说 你在classpath下面放java文件,就会被编译!

分享到:
评论

相关推荐

    ClassLoader类加载机制和原理详解

    双亲委派模型使得系统类(如java.*开头的类)由Bootstrap ClassLoader加载,而用户自定义类由应用程序类加载器(AppClassLoader)加载。这避免了类的冲突,保持了系统类库的稳定性。但有时我们可能需要打破这种模型...

    使用classloader动态加载Class

    Java提供了三个基础类加载器:Bootstrap ClassLoader、Extension ClassLoader和AppClassLoader,它们按照层次结构加载类。 1. **自定义ClassLoader**:Java允许我们创建自定义的ClassLoader,这通常用于实现动态...

    ClassLoader(类加载机制)1

    Bootstrap ClassLoader负责加载JDK的核心库,Extension ClassLoader加载Java的扩展库,而App ClassLoader则加载应用的类路径下的类。用户还可以自定义类加载器,用于加载特定位置或格式的类。 2. **Java类** Java...

    Java ClassLoader定制实例

    在Java编程语言中,ClassLoader是一个至关重要的组成部分,它负责加载类到JVM(Java虚拟机)中。理解ClassLoader的工作原理以及如何定制它,对于深入学习Java的运行机制和进行高级应用开发具有重要意义。本篇文章将...

    JVM ClassLoader简析

    这种委托加载机制保证了类的唯一性,防止了同一个类被不同ClassLoader加载两次的问题。 ClassLoader还有自定义的概念,允许开发者创建自己的ClassLoader来实现特定的加载逻辑。例如,从网络、数据库或特定文件系统...

    探究java的ClassLoader及类变量初始化顺序

    在Java编程语言中,ClassLoader是核心组件之一,它负责加载类到JVM(Java虚拟机)中。理解ClassLoader的工作机制以及类变量初始化的顺序对于深入理解Java运行时环境至关重要。这篇博文将探讨这两个主题。 首先,让...

    自定义classloader的使用

    在Java中,Classloader是加载类的关键组件,它负责查找、加载和初始化字节码文件。自定义Classloader允许开发者根据特定需求定制类的加载逻辑,例如加密类文件、隔离不同版本的库或者动态加载代码。本文将深入探讨...

    tomcat 类加载机制 —— ClassLoader

    类加载遵循“双亲委托模型”,即当一个类加载器收到加载类的请求时,它会首先委托父类加载器尝试加载,只有当父类加载器无法找到对应的类时,才会自己尝试加载。这样保证了基础类库的一致性,同时也允许Web应用覆盖...

    ClassLoader小例子

    在Java编程语言中,ClassLoader是一个至关重要的组成部分,它负责加载类到JVM(Java虚拟机)中,使得程序能够执行。本示例"ClassLoader小例子"将深入探讨这个概念,并通过一个具体的程序来演示其工作原理。下面我们...

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

    - **`findClass()`方法**:重写`ClassLoader`中的`findClass()`方法,该方法用于实际加载类的二进制数据。首先调用`loadClassData()`方法从文件系统读取类文件数据,然后使用`defineClass()`方法将二进制数据转换为`...

    ClassLoader的 一些测试

    在Java编程语言中,ClassLoader是一个至关重要的组成部分,它负责加载类到JVM(Java虚拟机)中执行。这篇测试主要探讨了ClassLoader的工作原理及其在实际应用中的使用。通过阅读给出的博文链接,我们可以深入理解...

    定义ClassLoader调用外部jar包

    默认情况下,Java使用系统ClassLoader(Bootstrap ClassLoader)加载JDK核心库,然后是Extension ClassLoader加载扩展库,最后是App ClassLoader加载应用类路径(ClassPath)下的类。当这些默认ClassLoader无法满足...

    classloader

    这个模型规定,当一个类加载器收到加载类的请求时,它首先会委托父类加载器尝试加载,只有当父类加载器无法加载时,才会自己尝试加载。这样可以保证类的唯一性,避免不同加载器加载相同类导致的问题。 综上所述,类...

    ClassLoader 案例

    在Java编程语言中,ClassLoader是核心组件之一,它负责加载类到JVM(Java虚拟机)中。自定义ClassLoader允许开发者根据特定需求加载类,比如动态加载或更新类文件,这在某些高级应用场景中非常有用,如插件系统、热...

    类加载机制ClassLoader

    在Java编程语言中,类加载机制(ClassLoader)是理解JVM(Java Virtual Machine)工作原理的关键部分。它负责将.class文件从磁盘加载到内存中,使得Java程序能够执行。这个过程包括加载、验证、准备、解析和初始化五...

    classloader 加密解密应用程序 ,反编译class

    Bootstrap ClassLoader加载JRE的核心库,Extension ClassLoader加载Java扩展目录下的类,而AppClassLoader则加载应用的主类路径(ClassPath)上的类。 接下来,我们来讨论“加密解密应用程序”。在Java环境中,为了...

    Java ClassLoader Tutorial.zip

    Bootstrap ClassLoader加载JDK核心类库,Extension ClassLoader加载扩展类库,而AppClassLoader则加载应用类路径上的类。 3. 双亲委派模型:Java的类加载机制遵循双亲委派模型,即当一个类加载器接收到加载类的请求...

    classloader体系结构(含hotswap)

    这三种类加载器遵循双亲委派模型,即当一个类加载器收到加载类的请求时,它首先委托父加载器尝试加载,只有在父加载器无法加载的情况下,才会尝试自己加载。这样可以确保核心类库的稳定性,并防止用户自定义的类覆盖...

    lassLoader的关系以及如何防止ClassLoader内存泄漏

    类加载器之间的关系遵循“双亲委派模型”:当一个类加载器收到加载类的请求时,它首先会委托父类加载器去尝试加载,只有当父类加载器无法找到对应类时,子加载器才会尝试自己加载。这种模型保证了类的唯一性,防止了...

    ClassLoader总结

    由于每个类都有唯一的ClassLoader实例加载,所以不同ClassLoader加载的相同类实际上是不同的类,它们之间无法相互转换。 6. 类的卸载: Java虚拟机默认不会主动卸载类,除非JVM退出或者加载该类的ClassLoader被...

Global site tag (gtag.js) - Google Analytics