ClassLoader如何加载class

jvm里有多个类加载,每个类加载可以负责加载特定位置的类,

例如:

bootstrap类加载负责加载jre/lib/rt.jar中的类, 我们平时用的jdk中的类都位于rt.jar中。

extclassloader负责加载jar/lib/ext/*.jar中的类。

appclassloader负责classpath指定的目录或jar中的类。

除了bootstrap之外,其他的类加载器本身也都是java类,它们的父类是ClassLoader。

时间: 2024-08-02 10:22:31

ClassLoader如何加载class的相关文章

ClassLoader.getResourceAsStream() 加载配置文件资源

JAVA 笔记 ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别     Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致. 例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.class.getResourceAsStream("name") 会在com.test.mycode包下查找相应的资源. 如果这个name

修改classloader的加载路径

三个类加载器修改加载路径的方式是修改jvm参数 1.BootstrapClassLoader的加载路径由 sun.boot.class.path 指定.因此运行程序时加上参数 -Dsun.boot.class.path=加载路径 即可 例如: 运行程序结果如下: 2.ExtClassLoader的加载路径由 java.ext.dirs 指定.因此运行程序时加上参数 -Djava.ext.dirs=加载路径 即可 ExtClassLoader加载时会搜索指定路径下的所有子目录,也就是说它会搜索ja

java 使用ClassLoader动态加载jar,zip文件

java ClassLoader的使用 public class Main {     public static void main(String[] args) {                  URL[] urls = new URL[] {};         MyClassLoader classLoader = new MyClassLoader(urls, null);         String path = "E:/WorkSpace/MapSDKLibrary/libs

深入理解ClassLoader(四)—类的父委托加载机制

上几次我们介绍到了JVM内部的几个类加载器,我们来重新画一下这个图,再来看一下他们之间的关系. JVM的ClassLoader采用的是树形结构,除了BootstrapClassLoader以外?每个ClassLoader都会有一个parentClassLoader,用户自定义的ClassLoader默认的parentClassLoader是SystemClassLoader,当然你可以自己指定需要用哪一个ClassLoader的实例,我们来看他的API 默认的无参构造方法使用的是SystemCl

java中类的加载顺序介绍(ClassLoader)

转自:http://blog.csdn.net/eff666/article/details/52203406 1.ClassNotFoundExcetpion  我们在开发中,经常可以遇见java.lang.ClassNotFoundExcetpion这个异常,今天我就来总结一下这个问题.对于这个异常,它实质涉及到了java技术体系中的类加载.Java的类加载机制是技术体系中比较核心的部分,虽然它和我们直接打交道不多,但是对其背后的机理有一定理解有助于我们排查程序中出现的类加载失败等技术问题.

自定义 ClassLoader 实现动态加载

不同的classloader加载的相同的类,会被jvm认为是不同的类 要想实现热加载,几个原则是要记住的: 每次实例化新的classloader 动态加载类文件,比如rul或者文件等等 记载的类使用反射进行方法调用,或者上溯为接口进行调用. 下面看一个例子: 首先定义一个被调用的简单类AppObject: package com.dataguru.jvm.classloader; public class AppObject { public void sayHello(){ System.ou

getClass()和getClassLoader()区别 以及ClassLoader详解及用途(文件加载,类加载)

获得ClassLoader的几种方法可以通过如下3种方法得到ClassLoader this.getClass().getClassLoader(); // 使用当前类的ClassLoader Thread.currentThread().getContextClassLoader(); // 使用当前线程的ClassLoader ClassLoader.getSystemClassLoader(); // 使用系统ClassLoader,即系统的入口点所使用的ClassLoader.(注意,s

图解classloader加载class的流程及自定义ClassLoader

图解classloader加载class的流程及自定义ClassLoader 博客分类: JVM JavaJVM虚拟机EXTSUN /** *  转载请注明作者longdick    http://longdick.iteye.com * */ java应用环境中不同的class分别由不同的ClassLoader负责加载.一个jvm中默认的classloader有Bootstrap ClassLoader.Extension ClassLoader.App ClassLoader,分别各司其职:

Java ClassLoader基础及加载不同依赖 Jar 中的公共类

转载自:最新内容及最清晰格式请见 http://www.trinea.cn/android/java-loader-common-class/ 本文主要介绍 ClassLoader 的基础知识,ClassLoader 如何动态加载 Jar,ClassLoader 隔离问题及如何加载不同 Jar 中的公共类. 本文工程开源地址见:Java Dynamic Load [email protected],Clone 以后直接以 Java Application去运行 java-dynamic-load