`
hellsing42
  • 浏览: 258180 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用URLClassLoader动态加载类

阅读更多
   一般动态加载类都是直接用Class.forName()这个方法,但这个方法只能创建程序中已经引用的类,并且只能用包名的方法进行索引,比如Java.lang.String,不能对一个.class文件或者一个不在程序引用里的.jar包中的类进行创建。但使用URLClassLoader就可以直接根据创建一个单独的.class文件,并且每当重新载入后并实例化后都是最新的方法。类似于jsp,当你在eclipse中改了一个jsp并且存储后,只要刷新页面就可以得到最新的结果而不用重新启动服务器。
    URLClassLoader是在java.net包下的一个类。他的构造函数输入参数需要输入1个URL数组。假设我们有一个编译后的class文件在C:\URLClass\testClass.class中,URLClassLoader进行加载 ,其中有个方法为test,我们需要动态加载这个类并且运行test方法

File xFile=new File("C:/URLClass");
URL  xUrl= xFile.toURL() ;
URLClassLoader ClassLoader=new URLClassLoader(new URL[]{ xUrl });
Class xClass=ClassLoader.loadClass("testClass");
Object xObject=xClass.newInstance();
Method xMethod=xClass.getDeclaredMethod("test");

代码中,省略了try catch部分,请自行添加 。 在你的工程运行前,完全可以不用引入testClass这个类,通过在运行时的动态加载就可以运行其中的方法。
分享到:
评论
2 楼 wangyu2010302660001 2013-05-16  
发布成文本Service后,那个testclass就load不进来了啊?有什么解决办法么?
1 楼 danni505 2009-10-15  
好!再来一个!

相关推荐

    Java URLClassLoader动态加载jar包1

    该类加载器用于从指向 JAR 文件和目录的 URL 的搜索路径加载类和资源。如果不是以该字符结束,则认为该 URL 指向一个将根据需要打开的 JAR 文件pac

    使用URLClassLoader加载本地文件夹c盘下的test.jar文件

    使用URLClassLoader加载本地文件夹c盘下的test.jar文件

    Spring bean 动态注册,jar包热替换

    Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...

    Java实现热加载完整代码;Java动态加载class;Java覆盖已加载的class;Java自定义classloader

    这样,每次调用代理类中的方法,都会先检查实现类的class文件是否是最新的,如果不是则重新加载,达到动态加载实现类class的目的。 关键字: Java实现热加载; Java动态加载class; Java覆盖已加载的class; Java...

    Java虚拟机JVM类加载初始化

    3):从jar、zip等等压缩文件加载类,自动解析jar文件找到class文件去加载util类 4):从java源代码文件动态编译成为class文件 当一个类被加载、连接、初始化后,它的生命周期就开始了,当代表该类的Class对象不再...

    Java动态编译Java代码,运行在内存中,并执行

    *1.创建 URLClassLoader 类加载器 * 2.获取当前执行的classpath的所有jar包的路径 * 3.通过java的ToolProvider创建JavaCompile,用来执行class源文件 ...创建DynamicClassLoader来加载类 ,defineClass这个方法

    java 类加载器 双亲委派 根加载器、扩展类加载器、系统类加载器

    类加载器通过完全限定名(比如,com.mypak.module1.MyClass)来加载类,它使类可以动态加载类到jvm中,java并未规定类的位置,可以来自本地文件系统,也可以来自网络。 加载器分类 类加载器分为根加载器(bootstrap ...

    Android 中动态加载.jar的实现步骤

    首先第一个是 jar 文件的制作,Java 里面直接把 .class 文件打包到 .jar 文件里面就可以了,但是 Android 的 Dalvik VM 是不认 Java ...要动态加载其它类,可以用的 Class Loader 有: DexClassLoader,PathClassLoader

    ClassLoaderTest:测试如何正确关闭类加载器,以便可以关闭基础jar文件上的文件句柄

    ClassLoaderTest 测试自定义的URLClassLoader以加载类 测试如何正确关闭类加载器。 测试如何使用反射关闭JarFile来修复资源泄漏。

    疯狂JAVA讲义

    9.6.5 使用类文件代替资源文件 350 9.6.6 使用NumberFormat格式化数字 350 9.6.7 使用DateFormat格式化日期 352 9.7 本章小结 355 本章练习 355 第10章 异常处理 356 10.1 异常概述 357 10.2 异常处理机制 ...

    JSP-Webshells:收集各种实现方法的JSP Webshel​​l。收集JSP Webshel​​l的各种姿势

    造成的后果使用者负责 JSP-Webshel​​ls集合BCEL字节码的JSP Webshel​​l自定义类加载器的JSP Webshel​​l ScriptEngine.eval的JSP Webshel​​l URLClassLoader加载远程jar的JSP Webshel​​l javac动态编译类的...

    华为 java 安全 编码 规范 安全篇 2.0

    规则 5.5 编写自定义类加载器时应调用超类的getPermission()函数 规则 5.6 避免完全依赖URLClassLoader和java.util.jar提供的默认自动签名认证机制 规则 6.1 禁止给仅执行非特权操作的代码签名 规范 6.2 不要...

    Java 2平台安全技术-结构,API设计和实现

    3.9 安全地加载类 44 3.9.1 类加载器的层次 44 3.9.2 java.lang.ClassLoader和授权 46 3.9.3 java.security.SecureClassLoader 49 3.9.4 java.net.URLClassLoader 49 3.9.5 类的路径 50 3.10 java.lang....

    JAVA 2平台安全技术-结构,API设计和实现

    3.9 安全地加载类 44 3.9.1 类加载器的层次 44 3.9.2 java.lang.ClassLoader和授权 46 3.9.3 java.security.SecureClassLoader 49 3.9.4 java.net.URLClassLoader 49 3.9.5 类的路径 50 3.10 java.lang....

    Android_plugin

    关于动态加载apk,理论上可以用到的有DexClassLoader,PathClassLoader和URLClassLoader; plugin 原理是通过 Android API 中的 pm 包下 和 res 包下 类 import android.content.pm.PackageInfo; import android....

    关于Android中自定义ClassLoader耗时问题的追查

    Android中类加载器有BootClassLoader,URLClassLoader, PathClassLoader,DexClassLoader,BaseDexClassLoader,等都最终继承自java.lang.ClassLoader 最近在优化西瓜视频客户端冷启动速度时,发现在关闭插件 ...

    轻松搞定jvm类加载器

    什么是类的加载 我们平时所编写的“xx.java”文件需要经过我们所知的java编译器(javac)编译成“xx.class”文件,这个文件存放着编译后jvm指令的的二进制信息。而**当我们需要用到某个类时,jvm将会加载它,并在...

Global site tag (gtag.js) - Google Analytics