文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

java类加载器URLClassLoader怎么使用

2023-07-05 22:35

关注

这篇文章主要介绍“java类加载器URLClassLoader怎么使用”,在日常操作中,相信很多人在java类加载器URLClassLoader怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java类加载器URLClassLoader怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

类加载器之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() 方法,可以参照下面的运行截图,补全。

java类加载器URLClassLoader怎么使用

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

java类加载器URLClassLoader怎么使用

到此,关于“java类加载器URLClassLoader怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯