java自定义ClassLoader加载指定的class文件
2017-12-07 18:56
465 查看
继承ClassLoader并且重写findClass方法就可以自定义一个类加载器,具体什么是类加载器以及类加载器的加载过程与顺序下次再说,下面给出一个小demo
首先定义一个类,比如MyTest,并且将其编译成class文件,然后放到一个指定的文件夹下面,其中文件夹的最后几层就是它的包名,这里我将这个编译好的类放到 : /Users/allen/Desktop/cn/lijie/MyTest.class
自定义的类加载器:
测试的主函数:
执行主函数,调用外部class的show方法:
首先定义一个类,比如MyTest,并且将其编译成class文件,然后放到一个指定的文件夹下面,其中文件夹的最后几层就是它的包名,这里我将这个编译好的类放到 : /Users/allen/Desktop/cn/lijie/MyTest.class
package cn.lijie; public class MyTest { public void show() { System.out.println("show test!"); } }
自定义的类加载器:
public class MyClassLoader extends ClassLoader { @Override protected Class<?> findClass(String name) { String myPath = "file:///Users/allen/Desktop/" + name.replace(".","/") + ".class"; System.out.println(myPath); byte[] cLassBytes = null; Path path = null; try { path = Paths.get(new URI(myPath)); cLassBytes = Files.readAllBytes(path); } catch (IOException | URISyntaxException e) { e.printStackTrace(); } Class clazz = defineClass(name, cLassBytes, 0, cLassBytes.length); return clazz; } }
测试的主函数:
public class MainClass { public static void main(String[] args) throws ClassNotFoundException { MyClassLoader loader = new MyClassLoader(); Class<?> aClass = loader.findClass("cn.lijie.MyTest"); try { Object obj = aClass.newInstance(); Method method = aClass.getMethod("show"); method.invoke(obj); } catch (Exception e) { e.printStackTrace(); } } }
执行主函数,调用外部class的show方法:
相关文章推荐
- java加载jar包和自定义class文件加载
- Java--对于 class文件进行加密 然后通过我们自己写的类加载器进行加载指定类
- java ClassLoader机制和如何加载外部class文件(含代码)
- Java--对于 class文件进行加密 然后通过我们自己写的类加载器进行加载指定类
- 利用自定义的 ClassLoader 加密 Java Class 文件
- 【java】自定义ClassLoader 加载外部类和jar文件
- 利用自定义的 ClassLoader 加密 Java Class 文件
- java加载Class文件的原理机制
- Java中加载配置文件的集中方式,以及利用ClassLoader加载文件
- Java中框架的概念,以及从配置文件中读取配置信息并加载指定类
- 分析Java的类加载器与ClassLoader(二):classpath与查找类字节码的顺序,分析ExtClassLoader与AppClassLoader的源码
- Java中加载配置文件的集中方式,以及利用ClassLoader加载文件 .
- 图解classloader加载class的流程及自定义ClassLoader
- Java加载Class文件的原理机制
- 类路径分析Java的类加载器与ClassLoader(二):classpath与查找类字节码的顺序,分析ExtClassLoader与AppClassLoader的源码
- ClassLoader如何加载class?—— Java经典面试题系列
- Java Class的热替换 自定义ClassLoader加载.class
- 文件中加载jar及Class,启动Java(Windows及Linux)
- 关于命令行中javac 编译成功,用 java 运行 class 文件出现 “ 找不到或无法加载主类 ” 的问题
- Java中加载配置文件的集中方式,以及利用ClassLoader加载文件