Java中怎么用反射机制调用jar
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"Java中怎么用反射机制调用jar",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java中怎么用反射机制调用jar"吧!下面讲展示
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
咖啡豆
手磨咖啡
江苏根荣互联网科技
互联网公司 科技公司
互联网科技的未来发展
互联网前沿科技
互联网科技股有哪些
互联网科技热点资讯
互联网校园科技培训
南平创想时代互联网科技有限公司
昭通互联网科技选哪家
明优互联网科技有限公司
互联网科技公司营业执照怎么办理
无锡工业互联网科技有限公司
互联网风格科技公司名称
山东大美朱楼互联网科技有限公司
互联网科技手机排行榜
安徽零酒互联网科技有限公司
山东蛋芒互联网科技有限公司
互联网科技大佬云集
有格互联网科技
保险科技 互联网保险
深圳科技互联网
互联网金融科技创新
汽车互联网创新科技园
来此购互联网科技有限公司
互联网科技商业
电子商务与互联网科技的关系
互联网科技数字货币
张家口科技产业互联网平台