Java中怎么用反射机制调用jar
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要讲解了"Java中怎么用反射机制调用jar",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java中怎么用反射机制调用jar"吧!下面讲展示
千家信息网最后更新 2025年01月19日Java中怎么用反射机制调用jar
这篇文章主要讲解了"Java中怎么用反射机制调用jar",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java中怎么用反射机制调用jar"吧!
下面讲展示的是从image.jar包中调用image.Buddy类的方法。
public class Main { public static void main(String[] args) { try { // 两种方式都可以 URL url = new File("/Users/wuchen/Documents/IntelliJIDEA/Applet/out/production/Applet/image.jar").toURI().toURL();// URL url = new URL("file:/Users/wuchen/Documents/IntelliJIDEA/Applet/out/production/Applet/image.jar"); URL[] urls = new URL[]{ url }; URLClassLoader loader = new URLClassLoader(urls); Class c = loader.loadClass("image.Buddy"); Object o = c.newInstance(); Method m = c.getMethod("sleep"); m.invoke(o); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (MalformedURLException e) { e.printStackTrace(); } }}
有几点需要注意
第一:
URL 是 "file:/Users/wuchen/Documents/IntelliJIDEA/Applet/out/production/Applet/image.jar"
image.jar后面没有斜杠了
第二:
类名是 image.Buddy,不要因为URL里面有image就把image.Buddy中的image省略掉。
第三:
Buddy.class应该放在image文件夹内,然后打包image文件夹,而不是打包image文件夹里的所有文件,再把包名改成image.jar
补充:java动态载入指定的类或者jar包反射调用其方法
序言
有时候。项目中会用到java动态载入指定的类或者jar包反射调用其方法来达到模块的分离,使各个功能之间耦合性大大减少,更加的模块化。代码利用率更高。模式中的代理模式就用到java的这一机制。
下边就让我们通过代码来看看怎样实现此功能。
代码具体
package loadjarclass;import java.io.File;import java.lang.reflect.Method;import java.net.URL;import java.net.URLClassLoader;import org.junit.Test;public class LoadJarClassTest { @Test public void testLoadClass() throws Exception{ /*动态载入指定类*/ File file=new File("D:/test");//类路径(包文件上一层) URL url=file.toURI().toURL(); ClassLoader loader=new URLClassLoader(new URL[]{url});//创建类载入器 //import com.sun.org.apache.bcel.internal.util.ClassLoader; //ClassLoader classLoader = new ClassLoader(new String[]{""});//类路径 Class> cls=loader.loadClass("loadjarclass.TestTest");//载入指定类。注意一定要带上类的包名 Object obj=cls.newInstance();//初始化一个实例 Method method=cls.getMethod("printString",String.class,String.class);//方法名和相应的參数类型 Object o=method.invoke(obj,"chen","leixing");//调用得到的上边的方法method System.out.println(String.valueOf(o));//输出"chenleixing" /*动态载入指定jar包调用当中某个类的方法*/ file=new File("D:/test/commons-lang3.jar");//jar包的路径 url=file.toURI().toURL(); loader=new URLClassLoader(new URL[]{url});//创建类载入器 cls=loader.loadClass("org.apache.commons.lang3.StringUtils");//载入指定类,注意一定要带上类的包名 method=cls.getMethod("center",String.class,int.class,String.class);//方法名和相应的各个參数的类型 o=method.invoke(null,"chen",Integer.valueOf(10),"0");//调用得到的上边的方法method(静态方法,第一个參数能够为null) System.out.println(String.valueOf(o));//输出"000chen000","chen"字符串两边各加3个"0"字符串 }}
感谢各位的阅读,以上就是"Java中怎么用反射机制调用jar"的内容了,经过本文的学习后,相信大家对Java中怎么用反射机制调用jar这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
方法
反射
机制
文件
动态
代码
文件夹
路径
学习
上边
内容
功能
字符
字符串
模块
模式
类型
输出
之间
利用率
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
2020数据库新技术论文
大学图书馆数据库有什么用
l服务器异常
数据库管理技术简称
网络技术部门做什么
上海库存外贸软件开发公司
网络安全等级保护与网络安全保卫
蚌埠餐饮软件开发费用
濮阳市软件开发公司招聘
网络安全安卓版
松溪县微生活网络技术运营中心
连云港普联网络技术有限公司
操作风险损失数据库ld
剑灵革命无法登陆服务器
广州荔湾网络安全
联想服务器排名
东城区推广软件开发介绍
关于英语的网络安全演讲稿
服务器母机需要装bbr吗
笔记本和服务器直连
硬盘没有系统的服务器怎么办
网络安全七大分类
计算机软件开发效率如何提高
网络安全行业需求调研表
虎牙官方服务器地址
营销软件开发培训机构
校园网络安全flash
魔兽世界 四川服务器
爱吾游戏宝盒服务器
怎么在数据库表使用中文