ClassLoad

作者: Finlay_Li | 来源:发表于2020-09-01 15:02 被阅读0次

类的加载过程:类的加载—>类的连接—>类的初始化

①类的加载:将类的 .class文件读入内存,并为之创建一个java.lang.Class对象。

           此过程由类加载器完成

②类的链接:将类的二进制数据合并到JRE中

           加载类的静态内容

③类的初始化:JVM负责对类进行初始化

           对类静态内容初始化

类加载器ClassLoader

JVM 定义了两种类型的类加载器:
① 启动类加载器(bootstrap)
②用户自定义加载器(user-defined class loader)

JVM在运行时会产生3个启动类加载器

        ①引导类加载器:

            用C++编写的,是JVM自带的类装载器。

            负责Java平台核心库,用来装载核心类库。该加载器无法获取,尝试获取。返回null

        ②扩展类加载器:

           负责jre/lib/ext目录下的jar包或 –D java.ext.dirs 指定目录下的jar包装入工作库

        ③系统类加载器:

            负责java –classpath 或 –D java.class.path所指的目录下的类与jar包装入工作

            是最常用的加载器

使用类加载器加载属性文件

    public class ClassLoaderTest {

        @Test

        public void test1() throws IOException{

            //1 创建属性文件实例

            Properties props=new Properties();

            //2 加载(获取)属性文件

                    ①:本地属性文件:当前项目、C盘*/

            //props.load(new FileInputStream("./jdbc.properties"));

                    ②:远程属性文件:包名+属性文件名(bin中与.class文件同路径)

            ClassLoader cl = this.getClass().getClassLoader();

            InputStream in=cl.getResourceAsStream("ClassLoader/jdbc.properties");

            props.load(in);

            //3 获取属性文件内容

            String userName=props.getProperty("userName");

            String passWord=props.getProperty("passWord");

            //4 使用获取

            System.out.println(userName);

            System.out.println(passWord);

        }

    }

Class.getResource和ClassLoader.getResource的路径问题

https://www.cnblogs.com/yejg1212/p/3270152.html

相关文章

  • ClassLoad

    类的加载过程:类的加载—>类的连接—>类的初始化 类加载器ClassLoader JVM 定义了两种类型的类加载器...

  • Failed to classload enum type wh

    Failed to classload enum type while reading annotation me...

  • 类加载器

    有bootstrap,extension,system 系统的classLoad都是AppClassLoader数...

  • JVM类加载机制

    原文链接:https://www.pdai.tech/md/java/jvm/java-jvm-classload...

  • 某Java项目一期完成后的小结

    项目小结 技术栈: Spring Boot、Java Agent、 Byte Buddy、自定义ClassLoad...

  • java ClassLoad加载机制

    写在前面:Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做...

  • java classloader

    答案:ACDJDK中提供了三个ClassLoader,根据层级从高到低为: Bootstrap ClassLoad...

  • 第十周:classLoader for Android

    1、Android中有哪几种ClassLoader?它们的作用和区别是什么? Android系统ClassLoad...

  • Android 中的类加载器

    Android 中的ClassLoader 本质上,Android和传统的JVM一样,也需要通过ClassLoad...

  • 热修复-原理与实现

    Android中的类加载器 Android跟Java有很大的渊源,基于JVM的java应用是通过ClassLoad...

网友评论

      本文标题:ClassLoad

      本文链接:https://www.haomeiwen.com/subject/uijvsktx.html