使用Java类加载器URLClassLoader进行类加载和资源加载
作者:归人云淡风轻
时间:2023-04-24
浏览:0
类加载器之URLClassLoader的简单demopublicclassTest{publicstaticvoidmain(String[]args)throwsClassNotFoundException,NoSuchMethodException,SecurityException,InstantiationException,IllegalAccessException,IllegalArgumentException,InvocationTargetException,IOException{U
类加载器之URLClassLoader的简单demo
public class Test {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, IOException {
URL[] urls = new URL[] {new URL("http://192.168.119.132:8080/images/animal.jar")};
URLClassLoader classLoader = new URLClassLoader(urls);
//加载类以后就可以得到 Class 对象了
Class> clazz = classLoader.loadClass("com.learn.animal.Dog");
classLoader.close(); //加载完类以后就可以删除了。
//关闭 classLoader, 否则会造成 资源泄露 Resource leak
//这里不使用默认的构造器,使用带参数的构造器 获取特殊的构造器
Constructor> con = clazz.getDeclaredConstructor(String.class, int.class, int.class);
//使用构造器创建对象
Object ob = con.newInstance("小黑",12,50);
//在调用 Dog 对象的 say 方法,返回对 Dog 对象自己的描述
Method mtd0 = clazz.getMethod("say", new Class>[] {});
String dogSay = (String)mtd0.invoke(ob, new Object[] {});
System.out.println(dogSay);
//再使用setter 方法,改变属性 模拟 Dog 对象,逐渐长大,变胖 哈哈!
System.out.println("Three years later......");
Method mtd1 = clazz.getMethod("setAge", int.class);
mtd1.invoke(ob, 15);
Method mtd2 = clazz.getMethod("setWeight", int.class);
mtd2.invoke(ob, 70);
//注意这些方法是有返回值的! 返回值都是 Object 类型,需要自己强转类型
dogSay = (String)mtd0.invoke(ob, new Object[] {});
System.out.println(dogSay);
System.out.println("It's over!");
}
}这里的 URL 资源,我用的是虚拟机里面的搭建的简单的 nginx 服务器,也是看着别人的教程搭建的,很简陋的一个服务器,哈哈。但是,这里足够使用了,如果没有条件,或者想简单一点,可以使用本地的文件系统。
使用 file:///jar包地址 这个替换就行了。
这里使用的 jar 包也很简单,但是我直接打成了 jar 包,只有 class 文件了,我反编译以下,把代码图片贴出来吧。
这个反编译不是全部代码,但是细节很简单,只有一个 say() 方法,可以参照下面的运行截图,补全。

然后是运行截图,注意我这里这个 -encoding utf-8 是指定使用编码字符集,因为cmd里面执行代码,如果有中文可能无法通过编译。

作者最新文章
荣耀MagicOS 11发布计划与Agent Harness架构解析
2026-09-08 19:23
AI重构企业业务架构:超聚变“智企”范式核心解析
2026-09-08 18:39
PDF合并工具怎么选?在线合并5步实操指南
2026-09-04 17:05
PDF图片压缩工具推荐与批量处理实操指南
2026-09-03 12:14
照片如何转成PDF格式?三种图片转PDF操作方法
2026-09-03 11:04
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































