广州三合一网站建设,重庆旅游必去景点,定制高端网站建设报价,有哪些html网页设计的比赛文章目录 #x1f354;什么是类加载器#x1f6f8;有哪些常见的类加载器 #x1f354;什么是类加载器
负责在类加载过程中#xff0c;将字节码信息以流的方式获取并加载到内存当中
#x1f6f8;有哪些常见的类加载器 启动类加载器 启动类加载器是有Hotspot虚拟机通过的类… 文章目录 什么是类加载器有哪些常见的类加载器 什么是类加载器
负责在类加载过程中将字节码信息以流的方式获取并加载到内存当中
有哪些常见的类加载器 启动类加载器 启动类加载器是有Hotspot虚拟机通过的类加载器加载核心类 默认加载Java安装目录 / jre / lib下面的类文件 扩展类加载器 扩展类加载器是jdk中提供的是使用Java编写的类加载器加载扩展类 默认加载Java安装目录 / jre / lib / ext 下的类文件 应用程序加载器 应用程序加载器是jdk中提供的使用Java编写的类加载器加载应用程序classpath下的类 自定义类加载器允许用户自行实现类加载的逻辑可以从网络数据库等来源加载类的信息 自定义类加载器需要继承ClassLoader抽象类重写findClass方法 下面我们来写一个自定义类加载器 我们随便找一个class文件不知在哪里找文件的同学可以参考这一篇文章 字节码文件 我们使用jclasslib双击打开这个文件 可以看到这个类名位于固定目录下不能被启动类加载器扩展类加载器应用程序加载器加载所以我们选择自定义类加载器 代码如下 我们在pom文件中写入下面的代码
dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.11.0/version/dependencypackage org.JVM;import org.apache.commons.io.FileUtils;import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;public class MyClassLoader extends ClassLoader{Overrideprotected Class? findClass(String name) throws ClassNotFoundException{//com . yupi . springbootinit . MainApplication .classString fileName name.substring(name.lastIndexOf(.)1).class;byte[] bytesnew byte[0];try {bytes FileUtils.readFileToByteArray(new File(F:\\jvm\\data\\fileName));} catch (IOException e) {e.printStackTrace();}return defineClass(name, bytes, 0, bytes.length);}public static void main(String[] args) throws ClassNotFoundException {MyClassLoader myClassLoader new MyClassLoader();Class? clazz myClassLoader.loadClass(com.yupi.springbootinit.MainApplication);//打印类的字段Field[] declaredFields clazz.getDeclaredFields();for (Field field : declaredFields) {System.out.println(field.getName());}//打印类加载器的名称System.out.println(clazz.getClassLoader());}
} 我们来到jclasslib里面看一下发现如此 在技术的道路上我们不断探索、不断前行不断面对挑战、不断突破自我。科技的发展改变着世界而我们作为技术人员也在这个过程中书写着自己的篇章。让我们携手并进共同努力开创美好的未来愿我们在科技的征途上不断奋进创造出更加美好、更加智能的明天