Java运行时动态加载类之URLClassLoader
需求场景:通过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相关推荐
- Java运行时动态加载类之ClassLoader加载class及其依赖jar包
需求场景是:通过ClassLoader动态加载外部class文件,class文件又依赖某个具体jar包,需要动态加载jar包,采用URLClassLoader. 1.xml配置文件 <?xml ...
- Java运行时动态加载类之ClassLoader
需求场景:动态加载类ClassLoaderd,在xml文件中配置加载类名称和方法,: 一.准备 1)在D:\\tmp\\目录下配置a.xml文件: <?xml version="1.0 ...
- Java运行时动态加载类之Class.forName
需求场景:通过Class.forName加载类并创建实例. 1.接口类: package cn.fjs;public interface IC {public void action(); } 2.实 ...
- Java运行时动态加载类之ClassLoader方法带参数
和该文环境一样http://blog.csdn.net/fjssharpsword/article/details/64922083 不同的是,在load出的class调用具体方法时传递参数. 1.U ...
- Java反射-静态/动态加载类
title: Java反射-静态/动态加载类 date: 2019-05-28 18:50:00Java反射-静态/动态加载类 Class 类是对象,是java.lang.Class类的实例对象.任何 ...
- 字节码编程,Javassist篇三《使用Javassist在运行时重新加载类「替换原方法输出不一样的结果」》
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 通过前面两篇 javassist 的基本内容,大体介绍了:类池(ClassPool) ...
- Java利用反射动态加载类实战
package com.web.common.utility.reflector; import java.io.Serializable; import java.lang.reflect.Cons ...
- flash cs4 java运行时_加载外部数据时Flash CS4 IDE内部缓存
它们存储在您的系统's 1166699 cache (i.e. I.E.'缓存中 . 我有Firefox作为我的默认浏览器,但它们仍然存储在" AppData\Local\Microsoft ...
- Python笔记-解决pyinstaller打包后运行时动态加载模块报错(No module named)
出现的问题就是:No module named 原因是我代码里面使用了这个 importlib.import_module pyinstaller没有检测到. 百度上没有找到解决办法,在外wang找到 ...
最新文章
- 日本「AI 鱼脸识别」项目,每分钟识别 100 条
- shell脚本之case用法
- [leetcode] 根据String数组构造TreeNode,用于LeetCode树结构相关的测试用例
- 数据库SQL语句学习笔记(6)-使用函数处理数据
- dml语句包括哪些_聊聊MySQL基本操作DDL,DML,DQL,DCL
- unshift() 方法将一个或多个元素添加到数组的开头,并返回新数组的长度
- Vector:动态数组的使用和说明
- 2019年的代码都写完了吗?不如做个Python进度条看看还剩多少
- jQuery初识 - jQuery是什么
- Css中部分知识点整理【笔记整理】
- input输入框提示从数据库查出来的一堆数据
- 【Excel】下拉填充相同的数据
- 【机器学习原理】SVM支持向量机分类算法
- 用Redis给Java做优惠卷过期
- 不用ps如何批量修改图片尺寸?教你一个方法
- 符号——Alt+数字键
- 虚拟机 VMware Workstation 16 PRO 的网络配置
- 百度地图路线规划重新设置起点、终点图标和路线颜色
- 路由与交换系列之企业级ipv6和AAA通讯实验(上)
- 基于 Nios II 的串口打印和流水灯设计【使用 Quartus 软件】【掌握 SOPC 开发流程】
热门文章
- Linux下脚本实战之系统监控
- cac会议投稿难度大吗_成考高升专难度大吗?考试通过率怎么样?
- IIS7.5 安全配置研究(推荐)
- pycharm 中按照文档引包方式,引包错误
- emulator: Trying to vcpu execute at eip:6d4053
- u-boot-2009.08在2440上的移植详解(三)
- Android FrameWork学习(二)Android系统源码调试
- python入门到精通自学_python入门到精通大型视频、自学者的福利
- 接口测试工具Postman(转)
- spring框架中JDK和CGLIB动态代理区别