需求场景:通过URLClassLoader从jar文件中加载类并创建实例,可实现运行时动态加载

1、要加载的jar:

1)接口类IC

package cn.fjs;public interface IC {public void action();
}

2)实例类C

package cn.fjs;public class C implements IC{public void action(){System.out.println("Hi i am A class.");}
}

export到jar,放在指定目录,如D:\\tmp\\C.jar

2、动态加载:

1)接口类IC

package cn.fjs;public interface IC {public void action();
}

2)调度类Test

package cn.fjs;import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Scanner;public class Test implements Runnable{public Test(){new Thread(this).start();}public void run(){System.out.print("Pls enter the jar directory:like D\\tmp\\C.jar \n");Scanner sc = new Scanner(System.in);String dir = sc.next();System.out.print("Pls enter the class name:like cn.fjs.C \n");String cname = sc.next();load(dir,cname);System.out.println("\n\n");}private void load(String dir,String cname){String jarName = "file:"+dir;System.out.println(jarName);try{File file = new File(jarName);URL url = file.toURL();URLClassLoader loader = new URLClassLoader(new URL[]{url});Class aClass = loader.loadClass(cname);//利用Java反射机制创建实例测试方法IC ic = (IC)aClass.newInstance();ic.action();}catch (Exception e){e.printStackTrace();}}public static void main(String[] args){new Test();}
}

Java运行时动态加载类之URLClassLoader相关推荐

  1. Java运行时动态加载类之ClassLoader加载class及其依赖jar包

    需求场景是:通过ClassLoader动态加载外部class文件,class文件又依赖某个具体jar包,需要动态加载jar包,采用URLClassLoader. 1.xml配置文件 <?xml ...

  2. Java运行时动态加载类之ClassLoader

    需求场景:动态加载类ClassLoaderd,在xml文件中配置加载类名称和方法,: 一.准备 1)在D:\\tmp\\目录下配置a.xml文件: <?xml version="1.0 ...

  3. Java运行时动态加载类之Class.forName

    需求场景:通过Class.forName加载类并创建实例. 1.接口类: package cn.fjs;public interface IC {public void action(); } 2.实 ...

  4. Java运行时动态加载类之ClassLoader方法带参数

    和该文环境一样http://blog.csdn.net/fjssharpsword/article/details/64922083 不同的是,在load出的class调用具体方法时传递参数. 1.U ...

  5. Java反射-静态/动态加载类

    title: Java反射-静态/动态加载类 date: 2019-05-28 18:50:00Java反射-静态/动态加载类 Class 类是对象,是java.lang.Class类的实例对象.任何 ...

  6. 字节码编程,Javassist篇三《使用Javassist在运行时重新加载类「替换原方法输出不一样的结果」》

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 通过前面两篇 javassist 的基本内容,大体介绍了:类池(ClassPool) ...

  7. Java利用反射动态加载类实战

    package com.web.common.utility.reflector; import java.io.Serializable; import java.lang.reflect.Cons ...

  8. flash cs4 java运行时_加载外部数据时Flash CS4 IDE内部缓存

    它们存储在您的系统's 1166699 cache (i.e. I.E.'缓存中 . 我有Firefox作为我的默认浏览器,但它们仍然存储在" AppData\Local\Microsoft ...

  9. Python笔记-解决pyinstaller打包后运行时动态加载模块报错(No module named)

    出现的问题就是:No module named 原因是我代码里面使用了这个 importlib.import_module pyinstaller没有检测到. 百度上没有找到解决办法,在外wang找到 ...

最新文章

  1. 日本「AI 鱼脸识别」项目,每分钟识别 100 条
  2. shell脚本之case用法
  3. [leetcode] 根据String数组构造TreeNode,用于LeetCode树结构相关的测试用例
  4. 数据库SQL语句学习笔记(6)-使用函数处理数据
  5. dml语句包括哪些_聊聊MySQL基本操作DDL,DML,DQL,DCL
  6. unshift() 方法将一个或多个元素添加到数组的开头,并返回新数组的长度
  7. Vector:动态数组的使用和说明
  8. 2019年的代码都写完了吗?不如做个Python进度条看看还剩多少
  9. jQuery初识 - jQuery是什么
  10. Css中部分知识点整理【笔记整理】
  11. input输入框提示从数据库查出来的一堆数据
  12. 【Excel】下拉填充相同的数据
  13. 【机器学习原理】SVM支持向量机分类算法
  14. 用Redis给Java做优惠卷过期
  15. 不用ps如何批量修改图片尺寸?教你一个方法
  16. 符号——Alt+数字键
  17. 虚拟机 VMware Workstation 16 PRO 的网络配置
  18. 百度地图路线规划重新设置起点、终点图标和路线颜色
  19. 路由与交换系列之企业级ipv6和AAA通讯实验(上)
  20. 基于 Nios II 的串口打印和流水灯设计【使用 Quartus 软件】【掌握 SOPC 开发流程】

热门文章

  1. Linux下脚本实战之系统监控
  2. cac会议投稿难度大吗_成考高升专难度大吗?考试通过率怎么样?
  3. IIS7.5 安全配置研究(推荐)
  4. pycharm 中按照文档引包方式,引包错误
  5. emulator: Trying to vcpu execute at eip:6d4053
  6. u-boot-2009.08在2440上的移植详解(三)
  7. Android FrameWork学习(二)Android系统源码调试
  8. python入门到精通自学_python入门到精通大型视频、自学者的福利
  9. 接口测试工具Postman(转)
  10. spring框架中JDK和CGLIB动态代理区别