`

Java动态加载类ClassLoad和Class.forName

 
阅读更多
Java 中的类加载器大致可以分成两类,一类是系统提供的,另外一类则是由 Java 应用开发人员编写的。系统提供的类加载器主要有下面三个:

•引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的,并不继承自java.lang.ClassLoader。负责加载java基础类,主要是 %JRE_HOME/lib/ 目录下的rt.jar、resources.jar、charsets.jar和class等
•扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。负责加载java扩展类,主要是 %JRE_HOME/lib/ext 目录下的jar和class
•系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。可以通过 ClassLoader.getSystemClassLoader()来获取它。负责加载当前java应用的classpath中的所有类。

1. Class.forName通过.class类路径动态加载类,利用反射调用类中的方法。getDeclaredMethod中第一个参数是加载类中的方法名,第二个参数是这个方法要传入的参数值

Class<?> clsClass = Class.forName("org.program.test.jsf.bean.TestrunBean");
java.lang.reflect.Method mymethod = clsClass.getDeclaredMethod("getAllScenarioInProjectTree", Integer.class);
mymethod.invoke(clsClass.newInstance(), 1786);

2.ClassLoader

动态加载jar包文件可以通过File来读取jar包文件内容,然后塞选出其中符合条件的文件,然后加载类
http://blog.csdn.net/mousebaby808/article/details/31788325


ClassLoader clsLoader = Thread.currentThread().getContextClassLoader();
通过clsLoader可以获取当前线程装载的类,也就是class文件,调试clsLoader对象可以看到装载的类的路径和名字,也就是获取类的方式(org.program.test.jsf.bean.TestrunBean)
Class cls = clsLoader.loadClass("org.program.test.jsf.bean.TestrunBean");
TestrunBean testrunBean =  (TestrunBean) cls.newInstance();


ClassLoader classLoader =  this.getClass().getClassLoader();
Class<?> cls = classLoader.loadClass("org.program.test.jsf.bean.TestrunBean");
TestrunBean testrunBean =  (TestrunBean) cls.newInstance();

http://longdick.iteye.com/blog/442213
分享到:
评论

相关推荐

    类加载器,classload

    关于类加载器的 上课ppt -java虚拟机自带的加载器 根类加载器(Bootstrap) c++写的看不到扩展类加载器(extension) 系统类加载器(System) AppClassLoad 用户自定义的类加载器 Java.lang.ClassLoader的子类

    java类加载器

    ClassLoader 三种类加载方式 Boostrap Extenxsion 以及Application ClassLoad分别适用的场景

    深入探讨 Java 类加载器.pdf

    类加载器(class ...本文首先详细介绍了 Java 类加载器的基本概念,包括代理模式、加载类的具体过程和线程上下文类加载器等,接着介绍如何开发自己的类加载器,最后介绍了类加载器在 Web 容器和 OSGi™ 中的应用。

    classLoad.rar

    在java中 当你用一个类加载器 去加载一个类的时候 这个类里面所有的出现的过得类 都会通过这个类加载器加载在这个类后续 的操作中,只要是有由这个类衍生出的 那么涉及的类 都由这个类加载器进行加载 该类加载器为...

    JAVA内存结构-GC-CLASSLOAD

    JAVA内存结构-GC-CLASSLOAD

    破解java加密的ClassLoader.java,在classloader植入破解代码

    破解java加密的ClassLoader.java,在classloader植入破解代码

    java classload教程

    然后深入探讨java虚拟机(JVM)是如何利用类加载器读取代码,以及java中类加载器的主要类型。接着用一个类加载的基本算法看一下类加载器如何加载一个内部类。本文的下一节演示一段代码来说明扩展和开发属于自己的类...

    Java类热替换(热部署)源码

    Java 自定义ClassLoader 实现类的热替换核心代码

    面试-Java基本知识点1

    2.3 equal和==区别3 JVM内存结构Java对象实例化过程中,主要使用到虚拟机栈、Java堆和方法区 3.1 JVM基本结构类加载器classLoad

    JavaSE:JavaSE演示

    JavaSE ...│ ├─classLoad │ │ ├─ClassCypher.java │ │ ├─ClassLoadDemo.java │ │ ├─EncryptedCalss.java │ │ └─MyClassLoad.java │ └─designPattern │ ├─decorator &lt;d

    Java虚拟机类加载机制?案例分析

    在《Java虚拟机类加载机制》一文中详细阐述了类加载的过程,并举了几个例子进行了简要分析,在文章的后留了一个悬念给各位,这里来揭开这个悬念。建议先看完《Java虚拟机类加载机制》这篇再来看这个,印象会比较深刻...

    java虚拟机 ppt

    java虚拟机 classload机制,保护域,访问控制,生命周期

    java面试难点讲解:hashmap,spring aop,classload,dubbo,zookeeper,session等。

    面试必考之HashMap源码分析与实现 探索JVM底层奥秘ClassLoader源码分析与案例讲解 面试必备技能之Dubbo企业实战 ...互联网系统垂直架构之Session解决方案 分库分表之后分布式下如何保证ID全局唯一性 ...

    jboss 5 原理 2 classloader

    With OSGi-style classloading getting more and more traction, and a number of new Java modules/classloading specifications on the horizon, it was high time we revamped our classloading layer in order ...

    [百度安全中心博客-neobyte]Struts2 S2-020在Tomcat 8下的命令执行分析1

    %&gt;在tomcat 8.0.3下Struts2.3.16的blank app中执行这段jsp,输出结果如下:(省略部分非相关属性)class.classLoad

    Android插件框架Android-Plugin-Framework.zip

    用来开发Android插件APK,并通过动态加载的方式在宿主程序中运行。 若插件APK是完全独立的APK,那么插件apk也可独立安装运行。 若插件APK不是完全独立的apk,比如和插件宿主程序共用一些依赖库,那么插件apk...

    ClassLoadUtil

    类加载工具,用于java项目中动态加载需要的类库

    maven-classloader-plugin:只是针对Maven插件中的类加载问题的实验

    Maven的类加载器插件只是针对Maven插件中的类加载问题的实验

    android-saf-plugin-demo:android插件和saf

    基于SAF和第三方Plugin库的 插件1 依赖的plugin库目前此插件项目支持SAF框架,但是不能使用SAF框架中的基类如SAFapp等,可能导致和宿主基类冲突(同名,但是不属于一个Classload)不能识别。建议可以在plugin项目中...

    ClassLoader运行机制 自己写的

    ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的

Global site tag (gtag.js) - Google Analytics